如何处理音频流中的时钟偏差

时间:2014-12-29 09:46:17

标签: audio gstreamer audio-streaming alsa skew

问题:

  1. 通过WiFi + udp网络直播音视频流。
  2. Stream:Mpeg2Ts
  3. 玩家框架:gstreamer。
  4. Pipeline Appsrc ----> tsdemuxer -----> audio-queue ----> faad decoder ---> alsasink                        - -----> video-queue-> vpudecoder ----> videosink
  5. 音频设备配置为每秒处理48000个样本。
  6. 发送者时钟比接收器时钟快,我通过跟踪流和接收器系统时钟中的pcr值来获取此信息。 1小时后,发送器和接收器时钟之间有8秒的差异。
  7. 所以问题是发送者在接收器时钟的一秒钟内发送更多样本,因为发送者和接收者之间的这种等待时间随着时间的推移而不断增加。

1 个答案:

答案 0 :(得分:1)

时钟偏差应由GStreamer的同步机制和音频接收器基类内的偏移逻辑自动处理。

为了解决发送器和接收器之间延迟增加的问题,您必须正确地为输入加时间戳,而不是依赖于TS流内的时间戳(这些时间戳基于发送器时钟,因而在您身边是错误的)。为此,使用最新的GStreamer版本并在appsrc上设置do-timestamp = true和format = time可能已经足够了。