2016-02-12 136 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投訴並不會有太大的好處。 –