如何实现音频或视频的直播?

时间:2012-05-17 14:49:03

标签: video-streaming audio-streaming live-streaming

我正在尝试了解如何在缓冲区管理方面实现实时音频流。

对于音频情况:如果您的源捕获帧为44100hz +/-时钟错误,而接收器带有音频卡DAC消耗帧为44100hz +/-时钟错误。

由于每端的时钟错误,接收器处的缓冲区(最终)会失控或失控。

对于一个源实时流式传输到许多接收器,流控制流是不可能的。

我对解决方案的唯一猜测是跟踪接收器处的缓冲区填充(在比网络抖动效应更长的时间内)以及插入样本或丢弃样本。

对此有任何见解将不胜感激。 谢谢!

2 个答案:

答案 0 :(得分:2)

确实很重要。通过网络流式传输连续,长期,现场音频通常是在工业中完成的,这不是开玩笑的事情。假设两个振荡器在如此小的偏差范围内可以忽略,这太简单了。

(顺便说一句,可以说在某些情况下并不重要。例如,当看到两个邪恶的成年人落入坟墓时,就把Pugsley Adam的问题提交给他的姐姐,周三亚当斯。他问道。他们死了吗?“她干脆地回答,”这有关系吗?“)

以下是解决问题的三种可能方法,如果您能想到更多或更好的解决方案,请分享: 1)实现某种频率锁定环,从而稍微调整接收器的时钟以适应输入流 2)在接收器处执行采样率转换以纠正错误 3)监视缓冲器或队列中的样本数量,以便在即将发生欠载或溢出时,生成或丢弃一些样本,以避免音频质量严重下降。

如果您可以控制接收器的时钟,那么第一种解决方案是最好的。我不知道如何使用ALSA或PulseAudio等高级音频软件模块(任何建议都感激不尽!) 从哲学角度来说,执行采样率转换可能会很好,但是CPU密集程度远高于它的价值(并增加了不必要的失败风险) 所以我赞成监测缓冲深度(如5月所建议的那样),并且不小心地将样品放入或放出。

还有什么想法?

答案 1 :(得分:1)

绝对是时钟不同步的情况。事实是,这没关系。

假设一个时钟关闭的频率高达5Hz(比正常情况低几个数量级)。在一个小时的过程中,时钟仅漂移0.4秒,这比通常的2-5秒缓冲时间要短。

网络问题经常导致重新缓冲,而不是时钟同步问题。实际上,时钟通常相差1Hz或更小,这几乎不是问题。

现在,如果你想同步播放,这是一个完整的问题。幸运的是,流音频的听众通常不会这样做。