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