【问题标题】:Keeping live audio stream synced保持实时音频流同步
【发布时间】:2014-02-28 22:46:13
【问题描述】:

我正在开发一个向设备提供多房间音频的应用程序,并已成功地保持从使用 GST 同步的文件(例如 mp3)中播放音频并手动使用 NTP,但我似乎无法获得实时音频要同步的流。

本质上,我希望能够将音频从一台设备流式传输到一台或多台其他设备,而不是让它们缓冲和不同步,我希望它们几乎同时播放(足够接近以防止任何延迟无论如何都要引人注目)。

有没有人对如何实现这一点有任何建议,或者可以提供任何材料来讨论这个问题? (搜索没有出现太多)

值得注意的是,此应用程序将使用 Python 编码。

【问题讨论】:

    标签: python streaming audio-streaming ntp gstreamer


    【解决方案1】:

    不幸的是,低至 10 毫秒的延迟对大多数人来说都是显而易见的。音乐家倾向于欣赏比这更低的延迟。而且,如果您有来自不同设备的任何扬声器在彼此的听觉范围内,即使是最轻微的不可预测延迟(这在计算机上是不可避免的),您也会遇到相位问题。

    基本上,不可能有不明显的延迟。即使您确实成功地同步了开始时间,每个设备上都有不同的采样时钟,并且它们会随着时间的推移而分开。一台设备的 44.1kHz 可能是另一台设备的 44.103kHz。

    如果您对同步有更现实的期望……大约 50-100 毫秒,那么这将变得更加可行。我会让一个主设备进行解码,然后将 PCM 样本发送到其他设备进行播放。跟踪您的音频设备缓冲区并确保它们不会变得太大(表明您的设备落后)或运行不足(表明网络问题或您的设备领先)。让所有设备具有相同的缓冲区大小,甚至可能使用广播数据包来发送音频,因为所有设备都在同一个网络上。

    【讨论】:

      【解决方案2】:

      很抱歉提出一个老问题,但这是我正在研究的问题。我相信你需要看看实时流协议(RTSP)是一种网络控制协议,设计用于娱乐和通信系统来控制流媒体服务器。该协议用于建立和控制端点之间的媒体会话。 这是保持事物同步的更好方法。至于将其发送到查找多播地址的多个设备。 希望这会有所帮助

      【讨论】:

        猜你喜欢
        • 2014-06-11
        • 2018-07-10
        • 1970-01-01
        • 1970-01-01
        • 2011-09-30
        • 1970-01-01
        • 2016-10-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多