一文搞懂IOS音视频编解码器VideoToolbox
💡
原文中文,约4100字,阅读约需10分钟。
📝
内容提要
在IOS平台上,可以使用VideoToolbox类来处理音视频数据,包括编解码操作。VideoToolbox是一套纯C语言API,可以直接访问硬件编解码器。使用VideoToolbox的步骤包括创建编码器实例、设置编码器参数、处理输入数据、处理输出数据和销毁编码器。
🎯
关键要点
- 在IOS平台上,VideoToolbox类用于处理音视频数据,包括编解码操作。
- VideoToolbox是苹果在IOS 8.0后开放的硬编解码API,使用纯C语言实现,能够直接访问硬件编解码器。
- VideoToolbox相关数据结构包括CVPixelBuffer、CMBlockBuffer和CMSampleBuffer。
- H.264编码流程为CVPixelBuffer → CMSampleBuffer → H.264。
- 使用VideoToolbox的步骤包括创建编码器实例、设置编码器参数、处理输入数据、处理输出数据和销毁编码器。
- 创建编码器实例需要使用VTCompressionSessionCreate函数,并设置视频帧的宽度、高度和编码器类型。
- 编码器参数包括码率、帧率和关键帧距离等,使用VTSessionSetProperties设置。
- 处理输入数据时,需要将原始视频帧放入CMSampleBufferRef中,并传递给编码器。
- 编码器处理完数据后,通过回调函数返回编码后的数据,可以进行后续处理。
- VideoToolbox编码以AVCC格式存储数据,需在转换为H.264格式时处理NALU长度和字节序。
- 最后,使用VTCompressionSessionCompleteFrames和VTCompressionSessionInvalidate销毁编码器。
➡️