iOS - AVAssetReader copyNextSampleBuffer 可能非常慢

iOS - AVAssetReader copyNextSampleBuffer can be very slow

我正在尝试实时解码视频 (30 fps) 并使用 OpenGL 显示/修改它。在 iPod touch 上,如果我解码用相机拍摄的视频,解码一帧可能需要 1 秒以上,而 30 fps 最多应该是 0.03 秒。所以结果不是很好..

是否可以使用 AVAssetReader 实现?例如,Instagram 在视频上实时应用滤镜(我认为是 GLSL 着色器),它们甚至可以在视频中导航。 Instagram 在 ipod touch 上运行良好。

可以在此处的答案中找到要解码的代码: Best way to access all movie frames in iOS

更具体地说:Hardware accelerated h.264 decoding to texture, overlay or similar in iOS

提前致谢

由于您提供的信息非常有限,我不得不假设您的视频序列是以 YUV 格式压缩的,并且您将 AVAssetReader 的设置设置为 kCVPixelFormatType_32BGRA 等其他格式,这会强制 iOS 用硬件加速给你转换颜色space,你慢慢感受吧。我建议不要设置,直接使用它原来的像素格式。

实际上我的应用程序在 CPU 上做了太多工作,我有另一个进程分析图像。拆下来的时候解码真的很快