Ios 如何在视频中使用TPCircularBuffer?

Ios 如何在视频中使用TPCircularBuffer?,ios,objective-c,video,video-streaming,Ios,Objective C,Video,Video Streaming,我们有一个用于iOS平台的VoIP应用程序。我们使用TPCircularBuffer进行音频缓冲,它的性能非常好 所以我想知道是否可以将TPCircularBuffer也用于视频缓冲。我搜索了很多,但没有找到任何关于“使用TPCircularBuffer视频”的有用信息。这可能吗??如果是的话,那么有人能给它遮光吗?任何代码示例都将受到高度赞赏。我想你可以将视频帧的像素复制到TPCircularBuffer中,从技术上讲,你会有一个视频环形缓冲区,但你已经失去了效率竞赛,因为你没有时间复制那么多

我们有一个用于iOS平台的VoIP应用程序。我们使用
TPCircularBuffer
进行音频缓冲,它的性能非常好

所以我想知道是否可以将
TPCircularBuffer
也用于视频缓冲。我搜索了很多,但没有找到任何关于“使用
TPCircularBuffer
视频”的有用信息。这可能吗??如果是的话,那么有人能给它遮光吗?任何代码示例都将受到高度赞赏。

我想你可以将视频帧的像素复制到
TPCircularBuffer
中,从技术上讲,你会有一个视频环形缓冲区,但你已经失去了效率竞赛,因为你没有时间复制那么多数据。您需要保留对帧的引用

或者,如果您真的想将解决方案混入
TPCircularBuffer
,可以将
CMSampleBuffer
指针写入缓冲区(小心地保留和释放)。但这似乎很难,因为指针太小了,所以从
TPCircularBuffer
神奇的内存映射包装中你真的什么也得不到

我只需制作自己的
CMSampleBufferRef
环形缓冲区。您可以或自己进行时钟运算:

 CMSampleBufferRef  ringBuffer[10]; // or some other number

 ringBuffer[(++i) % 10] = frame;
当然,你真正的问题不是环形缓冲区本身,而是处理解压缩视频的带宽非常高的事实,例如,每帧1080p是8MB,或者每帧200MB以24fps的速度存储1秒的数据,因此如果你需要微视频缓冲区以外的任何东西,你必须非常有创意

一些建议:

  • 上面的数字是针对RGBA的,所以请尝试在YUV中工作,其中的数字分别为3MB和75MB/s
  • 尝试低分辨率