我以AVCaptureSession
视频格式通过kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
捕获视频。我不能使用其他格式,我需要输出框架进行识别。当帧进入时,我使用AVAssetWriter
来写入文件。现在我需要尽可能以最有效的方式为视频添加水印。我期待GPUImage
图书馆。我编写测试项目,库中的变化很小,性能很好。 1280x720视频实时录制,叠加UIView
没有滞后。在我没有视频叠加的实际项目中包含GPUImage
后,我开始在视频录制方面遇到滞后。
之前的工作原理(手动):
Camera -> CMSampleBuffer -> Write to file
GPUImage
:
Camera -> CMSampleBuffer -> Shader conversion to RGB -> not sure what also process going here -> Write to file
问题是当我使用简单GPUImage
结构的Camera->MovieWriter
时,我会遇到滞后。当我自己写作时,我没有看到任何滞后。我认为转换为RGB以及GPUImage
所做的其他事情存在问题。
所以我的问题是:
我可以在没有RGB转换的情况下在帧上添加水印(在OpenGL中)吗?或GPUImage
中的哪些部分需要更多时间?我可以在着色器中叠加luminanceTexture
和chrominanceTexture
吗?