我有一个DirectShow推送源过滤器,它从自定义音频流中积累数据,而这些音频流没有时间戳。它缓存它们,然后将它们发送到外部音频输出设备,该设备通过设备提供的HTTP服务器接受音频缓冲区(您通过HTTP提交音频缓冲区)。不幸的是,音频输出设备是计时敏感的。一次发送太多数据或(自然)一次发送太少的数据会混淆它,并导致诸如“口吃”之类的播放问题。
我需要以精确的时间间隔通过HTTP连接发送缓冲区,就像捕获设备在发布捕获数据时使用基于硬件的采样和时钟的精度一样。我想我必须创建一个实时的关键线程并使用它。以下是我的问题:
,
()方法中发布任何数据时,如何阻止
。
发布于 2011-11-20 09:42:12
关于时间和漂移,您可以这样做:
当您开始流时,每次发送50 ms时,将当前时间存储在StreamingPos.
StreamingPos增加50 ms。
StreamingPos.之前不再发送任何进一步的数据。
这样,您就可以将数据同步到本地系统时间。这不需要与播放器设备的时钟完全匹配。但这不应该是个问题。解决这一问题的唯一方法是让两个设备与同一个时间源同步。
https://stackoverflow.com/questions/8195572
复制相似问题