- 获取封装格式数据(如FLV,MKV,MP4,TS,RMVB,AVI...);
- 解封装格式;
- 音频压缩数据(AAC、MP3...) -> 音频解码 -> 音频采样数据(PCM...)
- 视频压缩数据(H.264、MPEG2...) -> 视频解码 -> 视频像素数据 (YUV、RGB...)
- 音视频同步;
视频为什么要压缩:通过摄像头和话筒采集(录像过程中)生产的数据较大,可能1s几十M数据,所以需要压缩数据; 录像录音过程实质是一个压缩采集到的图像和音频数据的过程,也称为编码过程;
视频解码得到视频像素数据(YUV--Y:亮度,UV:色度) 音频解码得到音频采样数据
各种格式:HEVC(H.265研发中) H.264 MPEG4 MPEG2 VP9 VP8 VC-1
- H.264:由数据大小不固定的NALU构成,1个NALU存储1帧画面的压缩编码后的数据。
- H.264压缩方法:比较复杂,包含了帧内预测、帧间预测、熵编码、环路滤波等环节构成。 可以将数据压缩100倍以上。
AAC AC-3 MP3 WMA
AAC:可以将数据压缩10倍以上;
交叉编译的shell脚本可参考doc目录下的build.sh和build-static.sh; 编译步骤和注意事项参考doc目录下的help-cross-compiling.md文档。