【问题标题】:Building adaptive audio streaming for web and mobile web为 Web 和移动 Web 构建自适应音频流
【发布时间】:2017-11-13 10:26:49
【问题描述】:

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

  1. 编码为 128kbps 和 320kbps 音频,并根据带宽切换?这增加了确定带宽的复杂性。

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

  3. 使用 OPUS 之类的东西,但似乎没有任何移动浏览器支持?

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

考虑到所有这些,我想知道哪些方法实际上是有效的,并且值得推荐?

【问题讨论】:

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


    【解决方案1】:

    编码为 128kbps 和 320kbps 音频,并根据带宽切换?

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

    将 HLS/DASH 编码为纯音频流。我不确定该格式的等效比特率是多少?

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

    对于视频,网上有很多信息,但不确定什么相当于能够流式传输 - 1080p、720p、480p、320p(我的视频编码预设)。

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

    使用 OPUS 之类的东西,但似乎没有任何移动浏览器支持它?

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

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

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

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

    不过,对于音频,我只会提供常规音频文件并完成它!使用起来更简单,如果您发现需要动态生成的 DASH 清单来自动调整带宽使用量,您可以随时使用它们。

    【讨论】:

    • 这非常有用,谢谢。不过有一些后续行动:(1)对于常规音频文件,我必须根据带宽进行切换,而对于 HLS,浏览器会处理这个问题——因此我正在考虑这个问题。您认为基于带宽的切换更容易吗? (2) 我支持所有主要网络浏览器的最后 2 个版本,以及 Android 浏览器。您推荐的格式组合是什么 - AAC 和 MP3?也有作品?
    • (3) 我了解视频质量级别不同,但我将其用作推荐质量级别的示例,以了解音频相同。那么,AAC 是 64k 和 192,MP3 是 64 和 320 吗?最高的只是无损原始文件,还是有其他中间推荐的预设? (4) 您提到比特率仅与流分辨率松散相关。你能解释更多吗?再次感谢您!
    • @geoboy 使用 HLS,浏览器通常不会 处理这些问题。浏览器中的原生 HLS 支持很少见,仅限于 Safari 和 Android 浏览器中的一些中断支持。但是,您可以让 MediaSource Extensions JavaScript 播放器使用 HLS 和 DASH 为您处理。如果我是你,我会跳过 HLS 并选择 DASH。就编解码器支持而言,这为您带来了更大的灵活性。不过,这只是在你需要的时候。如果你不上线,你就不需要它。
    • @geoboy 关于比特率,是的,这些是我的建议。不过,这又取决于您的内容、您的受众和他们的联系。所以根据需要进行调整。如果你想要无损音频质量,你需要使用像 FLAC 这样的无损编解码器。关于视频的比特率,我所说的只是 720p 的视频可能在 2 兆比特到 15 兆比特之间,具体取决于设置……内容、观众期望和连接性应该决定这一点。
    • 知道了。我应该提到我正在使用 HLS.js/Dash.js 进行预先录制的视频流。那么,如果我确实不支持 HLS/DASH - 是否有推荐的基于带宽切换的方法?
    猜你喜欢
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 2019-07-14
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多