作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有适用于 iOS 平台的 VoIP 应用程序。我们使用 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,或以 24fps 的速度存储 1 秒的值(value)为 200MB,因此,如果您需要除微观视频缓冲区之外的任何东西,就必须非常有创意。
一些建议:
关于ios - 如何将 TPCircularBuffer 用于视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33581369/
我是一名优秀的程序员,十分优秀!