我想在 iOS 上解码一个加密的 H264 视频文件。我已经移植了我们的解密算法,它运行良好。但是,由于 SDK 中缺少 API,我们无法直接使用 H264 硬件解码器。
所以我正在尝试寻找解码 H264 视频的替代方法。即使存在一些可能的 LGPL 许可证问题,我也在尝试使用 FFmpeg 解码这些视频。我解码 H264 视频没有任何问题,并且由于 OpenGL ES 纹理,我渲染了 H264 帧。但是存在一些性能问题。我检测了我的代码,瓶颈是 ffmpeg 重新缩放和 YUV 到 RGB 的转换。我知道我可以使用 OpenGL ES 2.0 着色器通过 GPU 加速将 YUV 转换为 RGB(相关帖子Alternative to ffmpeg for iOS)。我也知道 AVFrame 结构是如何组成的:Y 数据的 data[0],U 数据的 data[1] 和 V 数据的 data[1]。但我不明白如何使用 line size[x] 和 data[x] 将数据传输到 OpenGL 纹理。
有人有 AVFrame YUV 到 OpenGL 纹理的例子吗?
谢谢,大卫