我们有一个适用于iOS平台的VoIP应用程序。我们在哪里使用TPCircularBuffer
进行音频缓冲,并且性能非常好。如何使用TPCircularBuffer进行视频?
所以我想知道是否有可能使用TPCircularBuffer
视频缓冲也。我搜索了很多,但没有发现任何有用的“使用TPCircularBuffer
的视频”。这甚至有可能吗?如果是,那么任何人都可以遮挡一些光线?任何代码示例都将受到高度赞赏。
我们有一个适用于iOS平台的VoIP应用程序。我们在哪里使用TPCircularBuffer
进行音频缓冲,并且性能非常好。如何使用TPCircularBuffer进行视频?
所以我想知道是否有可能使用TPCircularBuffer
视频缓冲也。我搜索了很多,但没有发现任何有用的“使用TPCircularBuffer
的视频”。这甚至有可能吗?如果是,那么任何人都可以遮挡一些光线?任何代码示例都将受到高度赞赏。
我想你可能复制您的视频帧的像素为TPCircularBuffer
,和你在技术上有一个视频环形缓冲区,但你已经失去了效率的比赛在这一点上,因为你没有时间去复制那么多数据。你需要保留对你的帧的引用。
或者,如果你真的想捣烂溶液注入到TPCircularBuffer
,你可以在CMSampleBuffer
指针写入缓冲区(仔细尊重保留和释放)。但是这看起来很沉重,因为你真的没有从TPCircularBuffer
的神奇内存映射包装中获得任何东西,因为指针非常小。
我只是做我自己的CMSampleBufferRef
环形缓冲区。您可以grab a prebuilt circular buffer还是时钟算术自己:
CMSampleBufferRef ringBuffer[10]; // or some other number
ringBuffer[(++i) % 10] = frame;
当然你真正的问题不是环形缓冲区本身,而是处理与压缩的视频其实是非常高的带宽,例如每帧1080p为8MB,或者200MB以每秒24帧的速度存储1秒,所以如果你需要其他任何东西而不是微观视频缓冲区,你将不得不非常有创意。
几点建议: