我正在尝试将视频文件的内容(暂时不包含音频)显示到 OpenGL 中的 UV 映射 3D 对象上。我已经在 OpenGL 中做了相当多的工作,但不知道从哪里开始处理视频文件,而且大多数示例似乎都是从相机获取视频帧,这不是我想要的。
目前我觉得如果我可以将视频的各个帧作为 CGImageRef 来设置,所以我想知道如何做到这一点?也许还有更好的方法来做到这一点?我应该从哪里开始?在 iOS 上播放视频最直接的文件格式是什么? .mov?
道歉;我在 iPhone 上打字,所以我会简单介绍一下。
使用视频的 URL 创建 AVURLAsset - 如果您愿意,可以是本地文件 URL。 QuickTime 可以做的任何事情都可以,因此 H.264 中的 MOV 或 M4V 可能是最好的来源。
查询资源中 AVMediaTypeVideo 类型的轨道。除非您的源视频具有类似的多个摄像机角度,否则您应该只获得一个,因此只需采用 objectAtIndex:0 就可以为您提供所需的 AVAssetTrack。
使用它来创建 AVAssetReaderTrackOutput。也许您想指定 kCVPixelFormatType_32BGRA。
使用 asset 创建一个 AVAssetReader ;将资产读取器跟踪输出附加为输出。并调用startReading。
此后,您可以在轨道输出上调用 copyNextSampleBuffer 来获取新的 CMSampleBuffer,使您处于与从相机获取输入相同的位置。因此,您可以锁定它以获取像素内容,并通过 Apple 的 BGRA 扩展将它们推送到 OpenGL。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)