【发布时间】:2024-01-19 02:14:01
【问题描述】:
我正在编写一个 iPhone 应用程序,它从摄像头获取视频,通过一些 OpenGL 着色器代码运行它,然后使用 AVFoundation 将输出写入视频文件。该应用程序以横向(任一)方向运行,因此录制的所有视频都应为横向。
我在开始录制之前使用的当前代码来正确获取视频是:
[[self videoWriterInput] setTransform:CGAffineTransformScale(CGAffineTransformMakeRotation(M_PI), -1.0, 1.0)];
其中 videoWriterInput 是 AVAssetWriterInput 的一个实例,其目的是补偿横向模式和 OpenGL 的反向方向。
这会生成在 Quicktime 播放器上下载和播放时可以正确播放的视频。但是,如果我将录制的视频添加到 iPhone 照片库,缩略图会正确显示,但如果手机处于横向状态,视频会旋转 90 度播放。如果手机是纵向的,视频可以正常播放,但会被水平裁剪以适应纵向尺寸。
根据this Apple tech note,我用于处理视频帧的AVCaptureVideoDataOutput 的捕获输出不支持设置视频方向。
有没有人成功录制了横向生成的视频,可以添加到 iPhone 库中并在横向中正确播放,如果是,如何?
【问题讨论】:
-
在从帧缓冲区中读取像素之前,您是否有任何理由不能在 OpenGL 中进行旋转以获得正确的方向?这样您就不必担心放置在 MOV/MP4 标头中的转换。默认设置就可以了。
-
感谢这个想法。然而,它的问题是屏幕上的实时视图是正确的 - 只有当我将录制的视频保存到 iPhone 库并播放它,甚至录制在桌面上正确播放时,才会出现不正确的视图。
标签: iphone ios camera orientation avfoundation