8

Windows Phone 8 で特定の解像度 (具体的には 480x480) で MP4 ビデオをキャプチャしようとしています。プリセット以外のサイズを使用できないことはわかっており、480x480 はプリセットではありません。キャプチャしたビデオ (640x480 など) を変換し、上部と下部をクロップして 480x480 にする方法を教えてください。無料またはオープン ソースのライブラリ (Windows Phone で実行されるもの) は大歓迎です。「外部サーバーを使用する」などの回答はしないでください。オンデバイス ソリューションが必要です。

4

1 に答える 1

1

Windows.Phone.Media.Capture API とAudioVideoCaptureDeviceクラスを使用する

AudioVideoCaptureDevice.OpenAsync の 2 番目のパラメーター (このリンクを参照) は解像度です。また、AudioVideoCaptureDevice.GetAvailableCaptureResolutions(sensor) を使用して解像度を取得できます。

編集: カスタム解像度を設定するには、AudioVideoCaptureDevice.SetCaptureResolutionAsyncを試してください。

編集 2: 記録されたビデオを変換するために、次のようなことを試すことができます: (コードを soz から author に取得した場所が見つかりません!)

StorageFolder isoStore = await ApplicationData.Current.LocalFolder.GetFolderAsync("Shared");
        var file = await isoStore.CreateFileAsync("foos1.wmv", CreationCollisionOption.ReplaceExisting);
        using (var s = await file.OpenAsync(FileAccessMode.ReadWrite))
        {
            Windows.Foundation.Size resolution = new Windows.Foundation.Size(640, 480);
            avDevice = await AudioVideoCaptureDevice.OpenAsync(CameraSensorLocation.Back,
                AudioVideoCaptureDevice.GetAvailableCaptureResolutions(CameraSensorLocation.Back).Last());

            VideoBrush videoRecorderBrush = new VideoBrush();
            videoRecorderBrush.SetSource(avDevice);

            viewfinderRectangle.Fill = videoRecorderBrush;

            await avDevice.StartRecordingToStreamAsync(s);

            Thread.Sleep(30000);

            await avDevice.StopRecordingAsync();
        }


        new MediaPlayerLauncher()
        {
            Media = new Uri(file.Path, UriKind.Relative),
        }.Show();
于 2013-10-02T08:10:46.580 に答える