使用OpenGL将效果应用于iPhone相机预览“视频”

时间:2011-02-04 01:27:02

标签: iphone opengl-es avcapturesession

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

  1. 可以使用背面和前置摄像头拍摄所有四种界面方向的照片。
  2. 正确旋转并缩放预览“视频”以及全分辨率照片。
  3. 允许(简单)效果同时应用于预览“视频”和全分辨率照片。
  4. 我以前的努力记录在this question中。我最近的尝试是修改Apple的样本GLVideoFrame(来自WWDC 2010)。但是,当会话预设为AVCaptureSessionPresetPhoto时,我无法让iPhone 4正确显示预览“视频”。

    有没有人试过这个或者知道为什么这个例子不能用于这个预设?

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

    预设时iOS设备摄像头视频/照片尺寸为AVCaptureSessionPresetPhoto:

    • iPhone 4返回:视频为852x640&照片是2592x1936
    • iPhone 4前端:视频&照片是640x480
    • iPod Touch 4G背面:视频&照片是960x720
    • iPod Touch 4G前端:视频&照片是640x480
    • iPhone 3GS:视频为512x384&照片是2048x1536

    更新

    切换Brad Larson的ColorTracking示例(garbled video)以使用AVCaptureSessionPresetPhoto时,我得到了相同的blog post结果。

2 个答案:

答案 0 :(得分:1)

问题是AVCaptureSessionPresetPhoto现在可以识别上下文,并根据您是否正在显示视频或静态图像捕获而以不同的分辨率运行。

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

无论如何,你可以看到我在这里解决了这个问题:

iOS CVImageBuffer distorted from AVCaptureSessionDataOutput with AVCaptureSessionPresetPhoto

答案 1 :(得分:-2)

AVCaptureSessionPresetPhoto用于拍摄照片,而不是拍摄实时Feed。您可以在此处阅读:http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/03_MediaCapture.html

(我认为这实际上是两个不同的凸轮或传感器,因为它们的行为非常不同,而且只需要在Photo和640x480之间切换就会延迟几秒钟。

你甚至无法同时使用这两个预设,并且在它们之间切换也很头疼 - How to get both the video output and full photo resolution image in AVFoundation Framework

HTH,虽然不是你想听的......

乌迪德。