iOS AVFoundation 视频捕捉方向选项

4
我有一个应用程序,我想只为前置摄像头进行视频捕获。这没有问题。但是,即使手机竖向持有,我也希望视频捕获始终处于横向模式。我已经基于苹果发布的AVCamDemo代码实现了工作,并从此技术说明中借鉴了信息,我能够指定方向。只有一个小技巧:虽然视频帧的方向是正确的,但内容仍然看起来像是以纵向拍摄的: 我在想是否受到硬件物理限制的影响:图像传感器是这样定位的吗?上述技术说明中提到了这一点: 重要提示:在静态图像输出和电影文件输出上设置方向不会物理旋转缓冲区。对于电影文件输出,它会将跟踪变换(矩阵)应用于视频轨道,以便在播放时旋转电影;对于静态图像输出,它会插入exif元数据,图像查看器可以在稍后查看时正确旋转图像。 但我的视频回放表明情况并非如此。任何见解或建议都将不胜感激!谢谢,Aaron。
1个回答

2
回答您的问题,是的,图像传感器只是朝向那个方向。视频摄像机是一个约1百万像素的“1080p”摄像机,具有固定方向。5MP(或4S的8MP等)静态相机也具有固定方向。镜头本身不旋转,其他相机部件也不旋转,因此馈送本身具有固定方向。
“但等等!”您说,“我使用相机应用程序(或API)拍摄的照片会正确旋转。为什么?”这是因为iOS在拍照时查看手机的方向,并将该信息与图片一起存储(作为Exif附件)。然而,视频没有被标记 - 每帧都必须单独标记,然后还有关于用户在视频期间旋转手机时要做什么的问题....
因此,不能询问视频流或静态图像在捕获视频时手机所处的方向。但是,您可以直接询问手机现在处于什么方向:
UIDeviceOrientation currentOrientation = [UIDevice currentDevice].orientation;

如果您在开始视频捕捉时(或从视频源提取静态图像时)这样做,那么您就可以使用此信息来自行旋转播放。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接