ffmpeg音视频同步问题

yeyunxiaopan 发布于 2013/05/06 09:00
阅读 4K+
收藏 0

有一个关于音视频同步的问题困扰了我很久了,一般是把把视频同步到音频,为什么音频的播放可以作为同步的时间参考呢,换句话说,为什么音频播放的时刻就是准确的呢,一般音频的采样率是44100,也就是1s采样44100次,那么是不是1s也需要播放44100次,难道是第一个音频帧从0开始播放,经过了1/44100秒播放完毕,紧接着开始播第二个音频帧,又经过1/44100秒播放完毕,也就是说音频帧各个帧之间是没有间隔的连续播放的,请问我的理解正确吗,谢谢。

然后我还发现,ffmpeg里有音频两种time_base,一个是AVCodecContext的timebase=1/44100, 一个是AVStream的timebase=32/1225,请问这两个有什么区别啊,非常感谢

看上面这个图,是我调试时候的截图







视频 
AVStream的time_base 
1/25 
AVCodecContext的time_base 
1/50 


音频 
AVStream的time_base 
32/1225 
AVCodecContext的time_base, 这个应该是音频采样率 
1/44100 


二者的值肯定是不一样的, 
我看到很多做音视频的同步的会使用pts*AVStream的time_base 


我想是不是这样,正常音频采用率是44100,就是每隔1/44100秒采一个包,我们称之为小包 
但是ffmpeg  av_read_frame 读出来的AVPakcet 是一个大包,里面包含了很多个小包 
而这个小包的数量我猜就是  (32/1225) / (1/44100) 
所以有两种time_base 


不知道这样理解是否正确呢 

加载中
返回顶部
顶部