2016-02-12 138 views
1

我正在处理可以流式播放.m3u8播放列表(HLS播放)中的音频流的项目。我正在使用videojs来达到上述目的。 当我用(.ts)格式的视频使用.m3u8时,一切都很顺利。这些流正在所有主流浏览器中播放。 该代码是下面:我想通过视频播放.m3u8格式的音频js

<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。

现在我的信息流提供商已经改变了HLS流,给了我.m3u8包含.aac格式的音频文件块的流。 所以现在,除苹果设备上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这实际上是在头设置尝试流,但在那里也没有运气。 任何帮助,将不胜感激。

回答

2

问题不在于客户端配置,而是在媒体容器中。以.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的示例。

+0

我试过用他们的公共密钥让我的浏览器静止不动,让我的电脑像一个逗号病人一样使用它。 –

+0

这是一个商业项目,如果您遇到麻烦,请联系他们的支持人员并报告您的问题。在SO投诉并不会有太大的好处。 –