動画ファイル
動画ファイルの再生についても音声同様、MediaElementを利用します。
動画の再生
動画を再生するサンプルは以下です。
<MediaElement Source="http://sample.co.jp/sample.wmv" AutoPlay="True" Width="480" Height="360"/>
Sourceプロパティに指定するファイルが音声から動画に変わっただけで、ほぼ同じコードで動画の再生が始まります。
XAMLで動画を指定する以外に、コードビハインド(C#コード)から動画を指定する方法を2つ紹介します。
Uri uri = new Uri("http://sample.co.jp/sample.wmv");
this.media.Source = uri;
this.media.Play();
// StorageFile.OpenReadAsyncメソッドでストリームを取得する var stream = await item.storage.OpenReadAsync(); this.mediaElement.SetSource(stream, item.storage.FileType); this.mediaElement.Play();
動画の撮影
画像同様、動画ファイルもWebカメラを用いて撮影できます。
利用するクラスも、CameraCaptureUIクラスとCaptureElementと画像撮影と同様です。
CameraCaptureUIを用いて撮影する
CameraCaptureUIを用いて動画を撮影するサンプルは、以下のとおりです。
// CameraCaptureUIを用意 CameraCaptureUI captureUI = new CameraCaptureUI(); // 撮影フォーマットをMP4に指定 captureUI.VideoSettings.Format = CameraCaptureUIVideoFormat.Mp4; // 撮影開始(OSの提供する撮影画面に移行します) return await captureUI.CaptureFileAsync(CameraCaptureUIMode.Video);
VideoSettingsの指定とCameraCaptureUIModeをVideoに指定する点は異なりますが、流れはほぼ画像の撮影と同様です。
CaptureElementを用いて撮影する
CaptureElementを撮影する方法も画像の撮影とほぼ同じですが、マニフェストファイルの許可はWebカメラ以外にもマイクのチェックが必要です。
初期化処理はまったく同じです。
var mediaCapture = new MediaCapture();
mediaCapture.Failed += mediaCapture_Failed;
try
{
await mediaCapture.InitializeAsync();
this.captureElement.Source = mediaCapture;
// プレビューを開始
await mediaCapture.StartPreviewAsync();
}
catch
{
// カメラがない、カメラを許可しない場合に例外が発生する
}
撮影時の処理はプロファイルの指定が異なります。
var capture = this.captureElement.Source;
// エンコード設定
MediaEncodingProfile encordingProfile = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Vga);
// 保存場所を指定CreationCollisionOption.GenerateUniqueNameだと同じ名前がある場合別名でファイルを作成
this.file = await Windows.Storage.KnownFolders.VideosLibrary.CreateFileAsync("samplevideo.mp4", CreationCollisionOption.GenerateUniqueName);
// 録画開始
await capture.StartRecordToStorageFileAsync(encordingProfile, file);
最後のStartRecordToStorageFileAsyncメソッドは、StorageFileへ撮影された動画を保存します。
まとめ
今回はさまざまなメディアファイルの操作方法を見てきました。メディアファイルを活用することで、ストアアプリの幅も広がります。
ぜひ、マスターして魅力的なアプリを作成してください!!
