内容提要
本文介绍了音视频开发中的面试题和技术知识,包括FFmpeg中avformat_open_input()的步骤、编码流程、PCM数据操作的最小单元以及iOS音频帧CMSampleBufferRef中的kCMFormatDescriptionExtension_VerbatimISOSampleEntry保存的信息。强调了这些信息在实现编码和muxer时的重要性和必要性。
关键要点
-
本文介绍音视频开发中的面试题和技术知识。
-
FFmpeg中avformat_open_input()的步骤包括打开输入媒体流和探测输入流的封装格式。
-
avformat_open_input()的关键流程包括分配AVFormatContext、设置options、初始化输入流等。
-
FFmpeg编码的流程包括注册编解码器、初始化输出码流、打开输出文件、创建输出码流等步骤。
-
PCM数据操作的最小单元是声道数乘以位数除以8乘以1个采样点。
-
iOS音频帧CMSampleBufferRef中的kCMFormatDescriptionExtension_VerbatimISOSampleEntry保存原始ISOSampleEntry数据,不能随意去掉。
延伸问答
FFmpeg中avformat_open_input()的主要步骤是什么?
avformat_open_input()的主要步骤包括打开输入媒体流、探测输入流的封装格式、分配AVFormatContext、设置options和初始化输入流等。
FFmpeg的编码流程包含哪些关键步骤?
FFmpeg的编码流程包括注册编解码器、初始化输出码流、打开输出文件、创建输出码流、查找和打开编码器、写文件头、发送和接收编码帧、写入文件尾等。
PCM数据操作的最小单元是如何计算的?
PCM数据操作的最小单元是声道数乘以位数除以8乘以1个采样点,例如双声道32位PCM的最小单元为8字节。
iOS音频帧中的kCMFormatDescriptionExtension_VerbatimISOSampleEntry保存了什么信息?
kCMFormatDescriptionExtension_VerbatimISOSampleEntry保存原始ISOSampleEntry数据,确保从ISO Sample Entry到CMFormatDescriptions的回转保持原样。
在使用avformat_open_input()时,如何探测输入流的封装格式?
探测输入流的封装格式分为三步:read_probe、av_match_ext和av_match_name,最终根据得分最高的配置作为格式。
为什么不能随意去掉kCMFormatDescriptionExtension_VerbatimISOSampleEntry?
去掉kCMFormatDescriptionExtension_VerbatimISOSampleEntry可能导致修改后的CMFormatDescription丢失重要的原始样本描述信息。