转码的基本原理就是先解码,业务处理,后编码.
1 视频转码流程图
1:打开文件和codec(avformat_ 和avcodec_操作)
2:打开filter(avfilter_)
3:读取一帧数据并解码
4:对解码数据filter操作(optional)
5:音频转换每帧samples number (audio only)
6:编码
7:写入封装文件或者流媒体,然后读取下一帧
2 代码实现
2.1 时间基转换
av_rescale_rnd() 是计算 “a * b / c” 的值并分五种方式来取整
单独的编解码都没有时间基转换,而转码有.
比如:flv 封装格式的 time_base 为{1,1000},ts 封装格式的 time_base 为{1,90000}
看第一帧的时间戳,计算关系:80×{1,1000} == 7200×{1,90000} == 0.080000
int6