我正在开发一个项目,可以流式传输.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
流的标头中设置的,但也没有运气。
任何帮助将不胜感激。
答案 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的示例和示例。