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

标签 angularjs html video.js http-live-streaming

我正在开发一个可以流式传输 .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 运行良好。

现在,我的流提供程序已通过向我提供包含 .aac 格式的音频文件 block 的 .m3u8 流来更改 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 流的 header 中设置的,但也没有运气。 任何帮助将不胜感激。

最佳答案

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

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

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

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

您的第三个选择是放弃 videojs-contrib-hls 并支付提供此功能的商业解决方案的费用。 Viblast Player是我有经验的解决方案。您可以查看播放 ADTS 流的示例 here .

关于angularjs - 我想通过视频js流式传输.m3u8格式的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35357856/

相关文章:

javascript - 查看未完成的请求

javascript - 从 Angular Controller 打开 Bootstrap 弹出窗口

javascript - 独特的多列排序angular js

javascript - XSS 攻击和样式属性

video - 如何在给定时间开始视频?

javascript - 将 ionic 应用程序中的域列入白名单

javascript - Extjs6 : Get Clipboard data on Keydown event of combobox

html - div分层问题

javascript - Videojs 不使用动态 URL,但使用静态 URL

javascript - 为什么videojs进度条不固定