如何为两个流加时间戳并在接收器上同步它们?

时间:2012-10-10 09:51:56

标签: c# audio video synchronization directshow

我有两个数据流,一个包含音频数据,另一个包含视频数据。 我用DirectSound录制的声音被放入一个长度为100毫秒的缓冲区中,DirectShow ISampleGrabbe巫婆以每秒30帧的速度为每帧抓取一帧(每帧33,33毫秒一帧)

TimeStamping的含义是什么?我应该将视频/音频附加到DateTime字段,并在接收时验证哪个音频数据包与视频帧具有相同的TimeStamp

我知道这是一个非常难的主题,但你可以给我一个想法吗?

1 个答案:

答案 0 :(得分:1)

这意味着每个视频/音频元素都有一个时间偏移量,表示何时必须根据视频/音频的启动时间进行播放。因此,接收端将按时间戳对接收到的元素进行排序,并按顺序播放它们,当视频或音频元素丢失时它也会等待。

您不应该为每个元素添加DateTime属性。相反,视频/音频标题应指示必须播放媒体的帧速率或频率,以及每秒钟将接收多少元素。所以一个简单的自动编号就可以了。玩家有责任对收到的元素进行排序,并检查它收到所有元素的位置是否足以在将来继续播放。