0

我已经做了一段时间的 Javascript 编程,但它总是与数据更新、保存、操作等有关。

我不知道诸如浏览器内音频播放器之类的东西是如何从互联网上获取音频(尤其是实时流式音频)并从我的计算机扬声器中播放出来的。

这在 Javascript 中是如何发生的?

例如,网站如何使用 Javascript 向我的扬声器提供实时音频?http://player.streamtheworld.com/liveplayer.php?callsign=WVIEAM

4

1 回答 1

1

现场音频与预先录制的音频没有太大区别......它只是在收到时播放,而在现场时,它会在录制时进行编码。

在当今的浏览器中,最基本的流式音频形式是一个简单的<audio>标签。通过将src属性从文件更改为流,您就可以启动并运行:

<audio src="http://cdn.audiopump.co/waug/main_mp3_256k" />

在这种情况下,浏览器不知道也不关心音频是实时流。它所知道的是它通过 HTTP 获取一些媒体数据,并在它进入时播放。

如果您的浏览器兼容性良好,最好使用MediaSource API,为您提供更多控制权(例如在HLS中切换到不同质量的流中途)并确保浏览器不会尝试缓存什么实际上是一个无限大小的文件。

例如,网站如何使用 Javascript 向我的扬声器提供实时音频?http://player.streamtheworld.com/liveplayer.php?callsign=WVIEAM

这个特定的网站由 Triton Digital 运营,他们仍然使用 Flash。在 HTML5 音频没有得到广泛支持的时候,许多网站仍然这样做。今天几乎没有理由这样做。

使用 Flash 的其他原因包括不兼容的服务器协议。如果您的流媒体服务器使用的是 RTMP,那么您就会被 Flash 卡住,因为浏览器不支持 RTMP。

由于浏览器无法正确处理包含在 ADTS 中的 AAC,因此在浏览器中流式传输 AAC 曾经存在问题。(在大多数情况下,流式传输 AAC 需要这种封装。)大多数浏览器已经解决了这个问题,但我怀疑这就是 Triton Digital 仍在使用他们的 Flash 解决方案的原因。通过使用 Flash,他们可以播放 AAC/ADTS 流。

于 2016-03-12T02:37:09.783 回答