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