我想通过视频js流式播放.m3u8格式的音频

时间:2016-02-12 08:23:58

标签: angularjs html5 video.js hls

我正在开发一个项目,可以流式传输.m3u8播放列表(HLS播放)中的音频流。我正在使用videojs达到上述目的。 当我使用.m3u8和(.ts)格式的视频时,一切都很顺利。这些流在所有主流浏览器中播放。 代码如下:

<script src="video.js"></script>
<script src="videojs.hls.min.js"></script>
<script>
    //myPlayer is my object for videosjs
    myPlayer.src({
          type: "application/x-mpegURL",
          src:"a_valid_HLS_stream.m3u8"
    });
    myPlayer.play();
</script>

和html

<video id="myvideo"></video>

此代码适用于包含.ts个视频流位的HLS。

现在,我的流提供商通过提供.m3u8个包含.aac格式的音频文件块的流来更改HLS流。 所以现在除了苹果设备中的safari之外的所有浏览器都能够播放这样的流。 我知道HLS原生支持HLS播放的事实,但因为videojs适用于那些不支持HLS播放的人。

虽然我在我的代码中做了一些更改,如下所示

<script>
    //myPlayer is my object for videosjs
    myPlayer.src({
          type: "application/x-mpegURL; audio/x-aac",
          src:"another_valid_HLS_stream.m3u8"
    });
    myPlayer.play();
</script>

并在html页面中

<audio id="myvideo"></audio>

我还尝试将src类型更改为application/vnd.apple.mpegurl,这实际上是在.m3u8流的标头中设置的,但也没有运气。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

问题不在于客户端配置,而在于媒体容器中。以.ts结尾的资源包含Elixir Docs容器内的媒体(音频/视频)流。 .aac中的资源eding包含MPEG-TS容器内的单个音频流。 ADTS不支持ADTS,客户端配置无关紧要。

使用ADTS而不是MPEG-TS可以减少几个百分点的开销。这可能就是您的提供商转而使用它的原因。

恕我直言,您现在最好的选择是联系您的提供商并要求他提供MPEG-TS流而不是ADTS流。

或者,您可以向videojs-contrib-hls的开发人员报告此问题,看看他们是否有兴趣实施此案例。

您的第三个选择是放弃videojs-contrib-hls并支付提供此功能的商业解决方案。 videojs-contrib-hls是我遇到过的解决方案。您可以看到播放ADTS流Viblast Player的示例和示例。