かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

UWPでカメラから動画撮影

UWPでカメラからの動画を録画する方法です。 CameraCaptureUIクラスを使用します。

VideoSettings.Formatで保存するタイプを指定してCapgureFileAsyncで録画とファイルへの保存を行います。

後は、FileSavePickerあたりで適当なファイルに出力してやればOKです。見た感じ録画した画像をインメモリにため込むことは出来ない気がします。何かごにょごにょやりたかったら、ファイルに保存されたものを読み込んで解析してねってことなのかな。

private async void Button_Click(object sender, RoutedEventArgs e)
{
    var camera = new CameraCaptureUI();
    camera.VideoSettings.Format = CameraCaptureUIVideoFormat.Mp4;
    var file = await camera.CaptureFileAsync(CameraCaptureUIMode.Video);

    var picker = new FileSavePicker();
    picker.FileTypeChoices.Add("mp4", new List<string> { ".mp4" });
    var dist = await picker.PickSaveFileAsync();
    if (dist != null)
    {
        file.CopyAndReplaceAsync(dist);
    }
}

最後に忘れがちなPackage.appxmanifestを開いて機能からWebカメラにチェックを入れます。

f:id:okazuki:20160314123531p:plain

実行すると以下のようなUIが表示されます。UIはカスタム出来ないと思うので、かっこいい動画録画用UIとか設計しないほうが無難でしょう。

f:id:okazuki:20160314123844p:plain

録画が終わると以下のようにプレビューしたりできます。至れり尽くせりですね。

f:id:okazuki:20160314124033p:plain