网站建设报价明细表创网站永久免费建站
一、音视频包含哪些数据


对于一个mp4文件我们可以通过音视频分析软件打开查看内部信息。
从两图可以看出mp4文件一般包含 音频流 视频流等。
对于上面的字段大致分析如下
Format  | 编码方式  | AVC  | 现在大部分视频都是这种编码方式,即H264。  | 
CodecId  | 编码器id  | avc1  | H264封装有2种格式:h264和avc1,avc1一般通过ffmpeg转码生成的视频 不带起始码0×00000001的  | 
Duration  | 播放时间  | 可以在解码时获取显示  | |
Bit rate  | 比特率  | 1929Kbps  | 指视频或音频文件在单位时间内使用的数据流量  | 
Frame rate  | 帧率  | 25  | 一秒钟显示的图片数  | 
Chroma Subsampling  | 采样排列方式  | 4:2:0  | 4:4:4表示完全取样。 4:2:2表示2:1的水平取样,垂直完全采样。 4:2:0表示2:1的水平取样,垂直2:1采样。 4:1:1表示4:1的水平取样,垂直完全采样  | 
Channel  | 声道数  | 2channels  | 双声道(音频才有)  | 
Sampling Rate  | 采样率  | 44.1KHZ  | 每秒钟采样的次数  | 
二、音视频解封装流程

封装格式相关函数
◼ avformat_alloc_context();负责申请一个AVFormatContext
结构的内存,并进行简单初始化
◼ avformat_free_context();释放该结构里的所有东西以及该
结构本身
◼ avformat_close_input();关闭解复用器。关闭后就不再需要
使用avformat_free_context 进行释放。
◼ avformat_open_input();打开输入视频文件
◼ avformat_find_stream_info():获取视频文件信息
◼ av_read_frame(); 读取音视频包
◼ avformat_seek_file(); 定位文件
◼ av_seek_frame():定位文件
区分不同的码流
AVMEDIA_TYPE_VIDEO视频流
video_index = av_find_best_stream(ic,AVMEDIA_TYPE_VIDEO,-1,-1, NULL, 0);
AVMEDIA_TYPE_AUDIO音频流
audio_index = av_find_best_stream(ic,AVMEDIA_TYPE_AUDIO,-1,-1, NULL, 0)
三、解封装分析
avformat_open_input和avformat_find_stream_info分别用于打开一个流和分析流信息。
在初始信息不足的情况下(比如FLV和H264文件),
avformat_find_stream_info接口需要在内部调用
read_frame_internal接口读取流数据(音视频帧),然后再分
析后,设置核心数据结构AVFormatContext。
由于需要读取数据包,avformat_find_stream_info接口会带来
很大的延迟。
