iOS4:如何将视频文件用作OpenGL纹理?

Bil*_*lly 23 video textures opengl-es ios

我正试图在OpenGL中将一个视频文件的内容(现在只说没有音频)显示在UV映射的3D对象上.我在OpenGL中做了很多,但不知道在视频文件处理方面从哪里开始,大多数示例似乎都是从摄像机获取视频帧,这不是我想要的.

目前我觉得如果我可以将CGImageRef的单个帧视频设置好,那么我想知道如何做到这一点?也许甚至有更好的方法来做到这一点?我应该从哪里开始,iOS上视频播放最直接的文件格式是什么?.mov格式?

Tom*_*mmy 32

道歉; 在iPhone上打字所以我会有点简短.

使用视频的网址创建AVURLAsset - 如果您愿意,可以是本地文件网址.QuickTime可以做的任何事情都很好,所以H.264中的MOV或M4V可能是最好的来源.

查询资产以查找AVMediaTypeVideo类型的曲目.除非您的源视频具有类似的多个摄像机角度,否则您应该只获得一个,因此只需使用objectAtIndex:0就可以获得您想要的AVAssetTrack.

用它来创建AVAssetReaderTrackOutput.可能你想指定kCVPixelFormatType_32BGRA.

使用资产创建AVAssetReader; 将资产阅读器轨道输出附加为输出.并调用startReading.

此后,您可以在轨道输出上调用copyNextSampleBuffer以获取新的CMSampleBuffers,使您处于与从摄像机获取输入相同的位置.所以你可以锁定它来获取像素内容并通过Apple的BGRA扩展将它们推送到OpenGL.

  • 声音怎么样? (8认同)