audio - 为 Web 和移动 Web 构建自适应音频流

标签 audio streaming html5-audio http-live-streaming opus

我正在构建一个站点,我想从 S3/CDN 流式传输音频文件。与视频一样,我希望流能够适应用户的带宽。似乎我有以下选择-

  • 编码为 128kbps 和 320kbps 音频,然后根据带宽切换?这具有确定带宽的额外复杂性。
  • 将 HLS/DASH 编码为纯音频流。我不确定该格式的等效比特率是多少?对于视频,网上有很多信息,但不确定什么相当于能够流式传输 - 1080p、720p、480p、320p(我的视频编码预设)。
  • 使用 OPUS 之类的东西,但似乎没有任何移动浏览器支持它?

  • 我不愿意拥有任何服务器端软件并使用已经支持 HLS/DASH 的 CDN。

    鉴于所有这些,我想知道这些方法中的哪些实际上是有效的并被推荐?

    最佳答案

    Encode to, say 128kbps and 320kbps audio, and switch based on bandwidth?



    当然可以,但是如果有人可以播放 128kbps,那么他们可能也可以播放 320kbps。至少在美国,有些移动设备可以可靠地以 64kbps 左右的速度运行。远高于此,它们通常连接到 LTE 或类似技术,具有可靠的回程,并且可以以更高的速度传输。如果您在谈论 AAC,我将有一个 64kbps 流和一个 192kbps 流。如果是 MP3,请在高端使用 320kbps。 (您始终可以在中间有更多步骤,但这对您来说成本更高,而且通常不值得。尽管如此,请密切关注您自己的分析并根据您自己的受众的需要进行调整。没有一成不变的-适合所有设置。)

    Encode to HLS/DASH as an audio-only stream. I am not sure what the equivalent bitrates in that format will be?



    HLS 和 DASH 不是编解码器,它们是传输协议(protocol)。无论您选择哪种传输协议(protocol),您的比特率都应该相同。

    For video, there is a lot of information online but not sure what is the equivalent of being able to stream - 1080p, 720p, 480p, 320p (my video encoding presets).



    没有等价物...您在谈论与视频无关的音频。而且,无论如何,您的流分辨率仅与其比特率松散相关。

    Use something like OPUS but it doesn't seem to be supported by any of the mobile browsers?



    无论如何,您可能需要使用多个编解码器来获得最广泛的浏览器支持。但是,这与使用的带宽无关,也与您使用的传输协议(protocol)无关。

    对于音频编解码器,Opus 在更高的比特率上与 AAC 相当,在更低的比特率下更好,具有广泛的带宽灵 active (因为它实际上是将几个编解码器组合成一个套件),并且具有较少的许可问题。 AAC 比 MP3 好。 HE-AAC (aacPlus) 在比特率较低时优于 AAC,但没有最好的设备/软件支持。 MP3 还可以,但拥有迄今为止最好的客户端支持……一切都可以播放 MP3,而且它是自同步的……不需要容器。 (Opus 和 AAC 需要某种容器来进行流式传输……这在 AAC 中更容易,可以与 ADTS 一起用于此目的。)

    I am reluctant to have any server-side software and use CDNs which already support HLS/DASH.



    您甚至不需要 HLS/DASH,特别是如果您的内容是预先录制的。 (当然,没有什么能阻止您使用它们,但增加的开销没有什么意义。)无论如何,您是对的,最好使用现有的 CDN。 HLS 和 DASH 的全部意义在于,您可以重用所有这些 HTTP CDN 基础设施......用于直播。

    仅对于音频,我只会提供常规音频文件并完成它!使用起来要简单得多,如果您发现需要动态生成的 DASH list 来自动扩展带宽使用量,您可以随时使用它们。

    关于audio - 为 Web 和移动 Web 构建自适应音频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44491059/

    相关文章:

    java - 如何在按下按钮时持续循环播放声音并在释放时停止?

    audio - 获取MP3音频压缩库

    javascript - 如何隐藏 HTML5 音频控件?

    audio - html5 音频播放器和网络上的 .aif 文件

    php - 音频播放器 : Load random song from database table without repeating

    opengl - 什么样的声音处理算法可以让你做出这样的可视化?

    matlab - Matlab音频拼接

    python - 如何使用 python 捕获 mp3 流

    ios - 跨设备建立同步音乐流

    python - 在 flush() 之后清除 Python 中的标准输出