【问题标题】:How to change the resolution of camera while recording video in WP8如何在WP8中录制视频时更改相机的分辨率
【发布时间】:2013-07-18 05:44:07
【问题描述】:

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

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

上面的语句抛出了参数异常。

另外,如果可能的话,请告诉我如何从前置摄像头拍摄?

如何做到这一点?请帮忙。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 你知道为什么前置摄像头的摄像头画面旋转了 180 度吗?
    • 相机总是横向录制。
    • 嘿克劳斯,我意识到 AudioVideoCaptureDevice 可能是在 WP8 中录制视频的最佳解决方案,但是我找不到任何示例或帮助。我已经为它发布了一个类似的问题stackoverflow.com/questions/17898769/…。你能帮我吗?提前致谢。
    【解决方案2】:

    你可以试试这个。

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

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

    【讨论】:

      【解决方案3】:

      解决方案是(据我所知)

           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;
      

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

      【讨论】:

      • 你知道为什么前置摄像头的摄像头画面旋转了 180 度吗?
      • 对不起!我不知道..您可以浏览这些链接,可能会对您有所帮助link [link] (msdn.microsoft.com/en-us/magazine/hh708750.aspx)
      • 因为相机总是横向拍摄。 @Vicky 您的代码是猜测,根本不是合适的解决方案。
      【解决方案4】:

      使用 AudioVideoCaptureDevice 重新录制视频

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-14
        • 1970-01-01
        • 2014-01-30
        相关资源
        最近更新 更多