2014-02-19 180 views
1

播放带有后备MPEG DASH音频流的HLS的最佳方式是什么? m3u8在Safari中运行良好,但在我看不到的情况下,它们都不能在Chrome中运行。仅播放HLS(m3u8)和MPEG DASH(mpd)

<video controls="true"> 
     <source type="video/mp4" src="http://example.com:8080/dash-audio/77PL4KA42.mpd" /> 
     <source type="application/x-mpegurl" src="http://example.com:8080/hls-audio/EU9TVX1D9.m3u8" /> 
    </video> 

回答

0

不幸的是没有最好的办法。

视频(和音频)编码格式的战斗仍在继续,这是一种情况,它显示了它的效果:它在一个浏览器中工作,但不在另一个浏览器中。

“最好的方式”目前是提供不同格式的视频,如mp4,webm,ogg video,并且您还可以提供m3u8流格式。您可以根据源标签的顺序(如果可能)选择要读取的格式的优先级(第一个标签将具有第一个pri - 如果不能播放,则下一个将被尝试,等等)。

有免费转换器可以批量转换您的视频,但他们只支持最常见的格式(不包括m3u8)。

如果你想音频才把<audio>标签可能是更适合我想:-)

+0

音频标签不支持实时流式音频,虽然我是正确的?这是一个有趣的领域。 – Ben

+0

@Ben不是连续的流没有。你可能会模仿某些东西来将音频作为“假”照相机流来提供,并使用WebRTC来流式传输音频部分,但它不是那么优雅的IMO(并且由于最初的协商,服务器要求等原因而变得复杂一些)。 – K3N

1

您可以使用hls.js库(https://github.com/video-dev/hls.js)得到HLS流没有在浏览器上玩本地支持HLS,例如Chrome浏览器& Firefox。这里是(提供直接的链接所)的最小安装一个片段

<script src="https://cdn.jsdelivr.net/hls.js/latest/hls.min.js"></script> 
 
<video id="video"></video> 
 
<script> 
 
    if(Hls.isSupported()) { 
 
    var video = document.getElementById('video'); 
 
    var hls = new Hls(); 
 
    hls.loadSource('http://www.streambox.fr/playlists/test_001/stream.m3u8'); 
 
    hls.attachMedia(video); 
 
    hls.on(Hls.Events.MANIFEST_PARSED,function() { 
 
     video.play(); 
 
    }); 
 
} 
 
</script>