我的目标是编写一个自定义的相机视图控制器,该控制器:

  1. 可以使用后置摄像头和前置摄像头(如果有)在所有四个界面方向拍照。
  2. 正确旋转和缩放预览“视频”以及全分辨率照片。
  3. 允许将(简单)效果应用于预览“视频”和全分辨率照片。

    此问题中记录了我以前的努力。我的最新尝试是修改Apple的示例GLVideoFrame(来自WWDC 2010)。但是,当会话预设为AVCaptureSessionPresetPhoto时,我无法使iPhone 4正确显示预览“视频”。

    有人尝试过这个吗,还是知道为什么该示例不适用于此预设?

    Apple的示例使用具有640x480视频尺寸的预设和默认的1280x720纹理尺寸。当预设为AVCaptureSessionPresetPhoto时,iPhone 4后置摄像头仅提供852x640。

    当预设为AVCaptureSessionPresetPhoto时,iOS设备相机的视频/照片尺寸:

    • iPhone 4背面:视频为852x640,照片为2592x1936
    • iPhone 4前面板:视频和照片均为640x480
    • iPod Touch 4G背面:视频和照片为960x720
    • iPod Touch 4G正面:视频和照片为640x480
    • iPhone 3GS:视频为512x384,照片为2048x1536

      更新

      当切换Brad Larson的ColorTracking示例(<< a href=“ http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios” rel=“ nofollow noreferrer”>博客帖子)使用AVCaptureSessionPresetPhoto。

有帮助吗?

解决方案

问题在于,AVCaptureSessionPresetPhoto现在可以识别上下文,并且可以根据显示视频还是静止图像而以不同的分辨率运行。

此模式的实时预览有所不同,因为它会用额外的字节填充行。我猜这是某种硬件优化。

无论如何,您可以在这里看到我的解决方法:

iOS CVImageBuffer从AVCaptureSessionDataOutput和AVCaptureSessionPresetPhoto变形了

其他提示

AVCaptureSessionPresetPhoto用于拍照,而不是捕获实时供稿。您可以在这里阅读: http: //developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/03_MediaCapture.html

(我相信这实际上是两个不同的凸轮或传感器,因为它们的行为截然不同,并且仅在Photo和640x480之间切换需要几秒钟的延迟。)

您甚至不能同时使用两个预设,并且在两个预设之间进行切换同样令人头疼-如何在AVFoundation Framework中同时获取视频输出和全照片分辨率图像

HTH,尽管不是您想听到的...

Oded。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top