如何在WP8中录制视频时更改摄像机的分辨率

时间:2013-07-18 05:44:08

标签: camera windows-phone-8 windows-phone resolution video-recording

我正在使用microsoft here提供的视频录制示例。我想更改我的应用中录制的视频的分辨率。目前默认以最高分辨率录制。怎么做?

videoCaptureDevice.DesiredFormat = new VideoFormat(PixelFormatType.Unknown, 480, 640, 30);

以上语句抛出了Argument Exception。

另外,如果可能,让我知道如何从前置摄像头捕获?

如何实现这一目标?请帮忙。

4 个答案:

答案 0 :(得分:0)

AudioVideoCaptureDevice.OpenAsync的第二个参数是分辨率。您可以使用AudioVideoCaptureDevice.GetAvailableCaptureResolutions(sensor)获取解决方案。

答案 1 :(得分:0)

你可以试试这个。

private AudioVideoCaptureDevice VideoRecordingDevice;
private Windows.Foundation.Size resolution = new Windows.Foundation.Size(320, 240);
VideoRecordingDevice = await AudioVideoCaptureDevice.OpenAsync(CameraSensorLocation.Back, resolution);

注意:请记住,它可能仅用于wp8或更高版本。

答案 2 :(得分:-1)

解决方案是(据我所知)

     VideoCaptureDevice webcam = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice();

 int videoformatcount = webcam.SupportedFormats.Count(); //We will get the avilable video format

  if (videoformatcount > 0)
             {
                var Temp = webcam.SupportedFormats;

                VideoFormat objVideoFormat = Temp[videoformatcount - 1];

                webcam.DesiredFormat = new VideoFormat(PixelFormatType.Format8bppGrayscale, objVideoFormat.PixelWidth, objVideoFormat.PixelHeight, 1);
            }

captureSource.VideoCaptureDevice = webcam;

这将产生分辨率最低的视频

答案 3 :(得分:-1)

使用音频视频捕捉设备录制视频

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