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

4
我正在构建一个网站,希望能够从S3/CDN流式传输音频文件。与视频一样,我希望流能够根据用户的带宽进行适应。看起来我有以下几个选择:
1. 编码为128kbps和320kbps音频,并基于带宽切换?这增加了确定带宽的额外复杂性。
2. 以HLS/DASH作为纯音频流进行编码。我不确定该格式的等效比特率是多少?对于视频,有很多在线信息,但不确定能够流式传输的相当于1080p、720p、480p、320p(我的视频编码预设)。
3. 使用OPUS之类的东西,但似乎没有任何移动浏览器支持它。
我不愿意使用任何服务器端软件并使用已经支持HLS/DASH的CDN。
考虑到所有这些,我想知道哪些方法实际上是有效的和推荐的?
1个回答

4

是否根据带宽进行编码,例如将音频编码为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)我支持所有主要Web浏览器的最新2个版本,以及Android浏览器。您推荐哪种格式的组合 - AAC和MP3?也包括Opus吗? - geoboy
(3) 我知道视频质量级别不同,但我使用它作为推荐质量级别的例子,以了解音频方面的情况。那么,AAC的质量级别是64k和192,MP3的质量级别是64和320吗?最高的是无损原始文件,还是有其他中间推荐预设?(4) 您提到比特率与流分辨率只有松散的相关性。您能否再详细解释一下? 再次感谢! - geoboy
@geoboy,使用HLS时,浏览器通常不会处理它。浏览器中本地支持HLS的功能很少,仅限于Safari和一些Android浏览器的有限支持。但是,您可以使用MediaSource扩展JavaScript播放器来处理HLS和DASH。如果我是您,我会跳过HLS并选择DASH。这样可以为编解码器支持提供更多的灵活性。但是,只有在需要时才需要这样做。如果您不需要实时直播,则不需要这样做。 - Brad
@geoboy 关于比特率,是的,那些是我的建议。但是,这取决于您的内容、受众和他们的连接。因此,请根据需要进行调整。如果您想要无损音频质量,您需要使用像FLAC这样的无损编解码器。关于视频的比特率,我所说的只是720p的视频可以从2兆比特到15兆比特不等,这取决于设置...而内容、受众期望和连接性应该决定它。 - Brad
明白了。我应该提到我正在使用HLS.js/Dash.js进行预录视频流。所以,如果我不使用HLS/DASH支持,是否有推荐的根据带宽切换的方法? - geoboy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接