混合音视频流
?
注:既然视频流不会影响Filter Graph的流时间,则视频流的播放情况不会影响到音频流的播放。本节主要讨论音频流播放情况对视频流播放的影响。
?
Filter Graph如图4:
?
图4 混合音视频流的Filter Graph
?
1.? Filter Graph不使用参考时钟
?
现象:音频正常、连续播放,视频快镜头播放。音视频不同步!
?
2.? Filter Graph使用参考时钟
?
2.1 Audio Sample不打时间戳
Audio Sample不打时间戳,音频流就不会影响Filter Graph的流时间。不管以Audio Renderer还是以系统时钟作为参考时钟,音视频均能同步、连续播放。
?
2.2 Audio Sample正常打时间戳
(1)Audio Renderer作为参考时钟
现象:音视频同步、连续播放。
(2)系统时钟作为参考时钟
现象:音视频同步、连续播放。
?
2.3 Audio Sample打时间戳(中途复位一次,时间戳从0重打)、连续送出
(1)Audio Renderer作为参考时钟
现象:Audio Sample时间戳复位后音视频不同步。由于Audio Sample时间戳复位后流时间不走了,所以视频播放停止(Video Sample的时间戳因超前流时间而被阻塞住),但音频仍然正常播放。因此造成音视频不同步。
(2)系统时钟作为参考时钟
现象:视频能够不受干扰地连续播放。音频在时间戳复位后有一部分数据(时间戳小于流时间的数据)被丢弃,所以播放中有一个跳变。
?
2.4 Audio Sample打时间戳(时间戳随机乱序)、连续送出
(1)Audio Renderer作为参考时钟
现象:音频连续播放。由于Audio Sample的时间戳将影响Filter Graph的流时间,导致视频的播放有时候出现快镜头,有时候出现停顿。最终音视频不同步。
(2)系统时钟作为参考时钟
现象:视频连续播放,音频播放不连续。因为Filter Graph的流时间独立运行,所以视频能连续播放。音频数据Sample时间戳小于流时间的将被丢弃,大于流时间的将被阻塞,因此总的播放效果就是断断续续。
?
2.5 Audio Sample打(连续)时间戳、间隙送出(模拟网络阻塞情况)
(1)Audio Renderer作为参考时钟
现象:音视频均不能连续播放。因为在音频无数据送出时,Filter Graph的流时间是不走的,导致视频也停止播放(Video Sample的时间戳因超前流时间而被阻塞住);直到音频有数据了,流时间继续走动,视频也恢复播放。音频数据虽不能连续播放,但音频数据没有被丢失。
(2)系统时钟作为参考时钟
现象:视频连续播放,音频断断续续,并且部分音频数据被跳过不播放。因为Filter Graph的流时间独立运行,所以视频能连续播放。音频数据Sample时间戳小于流时间的将被丢弃。
?