1音频播放的几种方式。。。。
2.opensL es播放
3.播放的过程。
4.音视频同步。。
不能通过帧率实现音视频同步,用timebase 。
avRatation num/den 。。
正常的视频延时就是 framedelay =1/tps.
stream->timebase;需要以音频为参考。
clock记录想对音频的时间线。。
clock=frame—》tps 。显示事件事件戳。。然后再*一个timebase。。
video去拿到audio中的clock 同时计算出video的clock
计算clockdiff。。
如果clock-audioclock 大于0,这说明视频超前了。。视频比音频块。。
休眠事件av_usleep (1/ftp+clockdiff). 注意时间是微秒。
将解码的事件算进去。因为差点的手机。解码时间需要多一些。
同步的延时就是delay=framedelay+解码时间。frame->repeat_dict /(2*tps)就是解压时间。
如果是 if(diff>1) name就是要 av_usleep(delay*2*1000000)
如果可控的就是 av_usleep(delay*1000000)
如果小于0.也就是说明音频超前。音频比视频快了。。。。最快的方法是不休眠。。。
diff>1 就是太恐怖。。就是不休眠。
如果diff>0.05 就丢帧,减少延时时间。。
网友评论