我正在尝试制作一个功能,从相机应用过滤器帧捕获并通过网络流式传输。
由于在 CMSampleBuffer 或 CVPixelBuffer(CPU 端)中应用过滤器时性能不佳,我尝试将数据从 CMSampleBuffer(来自相机捕获的原始数据)转换为 CIImage(CPU 端),然后使用 Core Image 的一些内置过滤器。当我转换回 CVPixelByteBuffer(或 CMSampleBuffer)以使用 VideoToolbox 进行编码时,以流畅的 fps 实现实时目标太慢了(我来宾的原因是将数据从 GPU 传输到 CPU)。
那么,有没有办法使用 CIImage 或 GL 纹理(如将纹理绘制到表面作为 MediaCodec 输入)作为 VideoToobox 的输入?或者更快地从 CGImage/CIImage 转换为 CVSampleBuffer,或者使用着色语言?我认为这是可能的,因为 Messenger、Snapchat、Snow ……可以在 iPhone 5 等旧设备上表现良好)
谢谢大家。