为网络和移动网络构建自适应音频流

Building adaptive audio streaming for web and mobile web

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

  1. 编码为 128kbps 和 320kbps 音频,并根据带宽进行切换?这具有确定带宽的额外复杂性。

  2. 编码为 HLS/DASH 作为纯音频流。我不确定该格式的等效比特率是多少?对于视频,网上有很多信息但不确定什么是能够流式传输 - 1080p、720p、480p、320p(我的视频编码预设)。

  3. 使用类似 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 不是编解码器,它们是传输协议。无论您选择哪种传输协议,您的比特率都应该相同。

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?

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

对于音频编解码器,Opus 在较高比特率下与 AAC 相当,在较低比特率下更好,具有广泛的带宽灵活性(因为它实际上是将几个编解码器组合成一个套件),并且许可问题较少。 AAC 优于 MP3。 HE-AAC (aacPlus) 在比特率较低时优于 AAC,但没有最好的 device/software 支持。 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 清单来自动缩放带宽使用量,您以后总是可以使用它们。