DirectShow音视频同步实验报告(3)

类别:VC语言 点击:0 评论:0 推荐:

混合音视频流

?

注:既然视频流不会影响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时间戳小于流时间的将被丢弃。

?

本文地址:http://com.8s8s.com/it/it694.htm