かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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