我想要实现的是通过Android设备进行直播。 经过测试,之前的4.3版本,设备正在使用HLS .m3u8正常播放实时流。 示例源代码如下:
<video controls="controls" style="height:400px; width:320px;">
<source src="/hls-live/my-stream_/my-stream_,1360,500,.m3u8"></source>
</video>
<a href="/hls-live/my-stream_/my-stream_,1360,560,.m3u8">Direct Link<a/>
如上所示,我正在尝试使用HTML5视频标记来呈现流。 它不会在浏览器中播放,但是,如果您单击具有完全相同路径的直接链接,将弹出一个播放器并且流将正常播放。
所以我在这里有点困惑,为什么live不能在html5播放器下正常播放,但能够在弹出播放器中播放(我假设后者是Android下的原生播放器?)
环境:
编辑:这里添加了更多信息,
我也尝试过其他类型的视频,例如http://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov/playlist.m3u8
来自此页面http://www.wowza.com/forums/showthread.php?32675-HLS-playback-issue-on-Android-4-3
。因此,将此m3u8替换为<source>
标记中的m3u8,Chrome浏览器即可正常播放。
如果查看正在工作的m3u8,您可以看到编解码器是avc1.66.30, mp4a.40.2
,我怀疑文件的实际编解码器是导致问题的原因。
我也试过调用media.canPlayType('application/vnd.apple.mpegURL')
并返回一个空字符串。
答案 0 :(得分:0)
我认为它直接来自浏览器但通过视频标记失败的原因是cross origin proxy
(safari对HSL没有这个限制)。
确保您将Access-Control-Allow-Origin: *
添加到.m3u8
和.ts
文件中,它应该有效