iOS VideoToolbox硬编H.265(HEVC)H.264(AVC):4 同步编码

时间:2022-01-30 02:23:12

本文档描述Video Toolbox实现同步编码的办法。

Video Toolbox在头文件描述了编码方式为异步,实际开发中也确实为异步。

This function may be called asynchronously, on a different thread from the one that calls VTCompressionSessionEncodeFrame.

然而,有些场合,我们希望使用同步处理。使用如pthread_mutex_t、dispatch_semaphore_t等方式在VTCompressionSessionEncodeFrame与编码回调函数中作线程同步并不理想,甚至导致死锁。GCD串行队列也并不像苹果说的那么好用,特别是预览播放器下快速接收网络数据包并解码,会堆积Block,性能反而没pthread好。

NSRecursiveLock、OSSpinLockLock、Barrier等方式我没尝试。

不过,我用另一个方式实现了同步编码,强制Video Toolbox发射出规定时间内的缓冲区的数据,配合semaphore即可。

文/熊皮皮(简书作者)
原文链接:http://www.jianshu.com/p/0bb7e30e57d8