酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows Mobile(.NET Compact Framework)でCameraCaptureDialogクラスを使って動画撮影する

今回は、カメラを使って動画録画を行う方法をご紹介します。

Microsoft.WindowsMobile.Forms 名前空間の CameraCaptureDialog クラスを利用する事で簡単に動画録画を行う事が出来ます。

以下に、サンプルコードを示します。

動画録画をおこなうダイアログを表示する

VB.NET

' 以下の名前空間を指定します
' Imports Microsoft.WindowsMobile.Forms

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

   Dim cameraCapture As New CameraCaptureDialog()

   cameraCapture.Owner = Nothing
   cameraCapture.InitialDirectory = "\My Documents"
   cameraCapture.DefaultFileName = "test.3gp"
   cameraCapture.Title = "Camera Demo"
   cameraCapture.Resolution = New Size(176, 144)
   cameraCapture.VideoTimeLimit = new TimeSpan(0, 0, 15)
   cameraCapture.Mode = CameraCaptureMode.VideoWithAudio
   cameraCapture.VideoTypes = CameraCaptureVideoTypes.Messaging

   ' カメラアプリを起動します
   cameraCapture.ShowDialog()
   
End Sub

C#

// 以下の名前空間を指定します
// Using Microsoft.WindowsMobile.Forms;

private void Button1_Click(System.Object sender, System.EventArgs e)
{
   CameraCaptureDialog cameraCapture = new CameraCaptureDialog();
   
   cameraCapture.Owner = null;
   cameraCapture.InitialDirectory = "\\My Documents";
   cameraCapture.DefaultFileName = "test.3gp";
   cameraCapture.Title = "Camera Demo";
   cameraCapture.Resolution = new Size(176, 144);
   cameraCapture.VideoTimeLimit = new TimeSpan(0, 0, 15);
   cameraCapture.Mode = CameraCaptureMode.VideoWithAudio;
   cameraCapture.VideoTypes = CameraCaptureVideoTypes.Messaging;
   
   // カメラアプリを起動します
   cameraCapture.ShowDialog();
}

上記のコードを実行してみました。

f:id:ch3cooh393:20140806011219p:plain

ビデオのみを録画する

アテレコする等の目的で音声を録音せずに、動画のみ録画したい場合は、CameraCaptureDialog の Mode プロパティを CameraCaptureMode.VideoOnly に変更します。

VB.NET

' ビデオのみ録画するモードに設定する
cameraCapture.Mode = CameraCaptureMode.VideoOnly

C#

// ビデオのみ録画するモードに設定する
cameraCapture.Mode = CameraCaptureMode.VideoOnly;

画質を選択する

上記の動画録画用のサンプルコードでは、Eメール添付用の動画を録画する設定になっていましたが、高品質の動画を録画したい場合、CameraCaptureDialog の VideoTypes プロパティを変更します。

設定可能な設定値は以下の通りです。

All なんでもOK!
Messaging Eメールに添付可能な品質のビデオ(3GPP)を録画します。
Standard 最も高品質のビデオを録画します。

VB.NET

' 高品質の画像の設定にする
cameraCapture.VideoTypes = CameraCaptureVideoTypes.Standard

C#

// 高品質の画像の設定にする
cameraCapture.VideoTypes = CameraCaptureVideoTypes.Standard;