我正在写一个iPhone应用程序,它从摄像头获取视频,通过一些OpenGL着色器代码运行它,然后使用AVFoundation
将输出写入视频文件。该应用程序以lanscape方向(或者)运行,因此所有记录的视频都应该是横向的。如何使用AVFoundation设置逐帧生成视频的方向?
当前的代码我开始录音,以获得该视频的正确的方式是使用前:
[[self videoWriterInput] setTransform:CGAffineTransformScale(CGAffineTransformMakeRotation(M_PI), -1.0, 1.0)];
其中videoWriterInput是AVAssetWriterInput
一个实例,目的是弥补风景模式和reveresed方向的OpenGL。
这会产生在Quicktime播放器下载并播放时播放正确的视频。但是,如果我将录制的视频添加到iPhone照片库,则缩略图可以正确显示,但如果手机处于横向模式,则视频播放会旋转90度。如果手机保持纵向显示,则视频播放正确,但会水平裁剪以适应纵向尺寸。
根据this Apple tech note我用于处理视频帧的AVCaptureVideoDataOutput
的捕获输出不支持设置视频方向。
是否有人成功录制了横向生成的视频,这些视频可以添加到iPhone库并在横向上正确播放,如果是这样的话?
是否有任何理由,你不能这样做在OpenGL旋转读出像素的帧缓冲区之前,以获得正确的方向?这样您就不必担心放在MOV/MP4标题中的变换。默认会正常工作。 –
感谢这个想法。然而问题在于屏幕上的实时视图是正确的 - 只有将录制的视频保存到iPhone库并播放它,甚至在桌面上正确播放录音,才会显示错误的视图。 – domgblackwell