在Windows Phone 8中录制(或录制后转换)非标准尺寸的视频

本文关键字:转换 非标准 的视频 Phone Windows | 更新日期: 2023-09-27 18:18:47

我试图在Windows Phone 8中以特定分辨率捕获MP4视频(具体而言,480x480)。我知道我不能使用预设之外的尺寸,而480x480不是预设。如何转换捕获的视频(例如640x480)并裁剪顶部和底部使其成为480x480?任何免费或开源的库(运行在Windows Phone上)都是受欢迎的。请不要回答诸如"使用外部服务器"之类的答案,我需要一个设备上的解决方案。

在Windows Phone 8中录制(或录制后转换)非标准尺寸的视频

使用Windows.Phone.Media.Capture api和AudioVideoCaptureDevice类

AudioVideoCaptureDevice第二个参数。OpenAsync(参见此链接)是解决方案。你可以使用audiovideocapturedevice。getavailablecapturerresolutions (sensor)

编辑:设置自定义分辨率尝试AudioVideoCaptureDevice。SetCaptureResolutionAsync

编辑2:你可以尝试下面的东西来转换录制的视频:(找不到我从soz到作者的代码!)

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();