我想通过视频 js 流式传输 .m3u8 格式的音频



我正在做一个项目,该项目可以流式传输.m3u8播放列表(HLS播放(中的音频流。 我正在使用视频JS来实现上述目的。当我使用 .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。

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

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

<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 流的标题中设置的,但那里也没有运气。任何帮助将不胜感激。

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

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

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

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

您的第三个选择是放弃videojs-contrib-hls,并为提供此功能的商业解决方案付费。Viblast播放器是我经验的解决方案。您可以在此处查看播放 ADTS 流的示例。

相关内容

  • 没有找到相关文章

最新更新