Android 4.3及以上版本中的HLS播放问题

3

我想要实现的是通过安卓设备进行直播流传输。在测试中,版本 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 video标签来渲染流。然而,在浏览器中无法播放,但是,如果您点击具有完全相同路径的直接链接,则会弹出播放器并正确播放流。
因此,我有点困惑,为什么实时内容无法在HTML5播放器下正确播放,但可以在弹出式播放器中播放(我假设后者是Android下的本地播放器?)。
环境:
- Android OS 4.3 - ASUS Nexus 7 - Chrome浏览器
编辑:这里添加了更多信息, 我还尝试了其他类型的视频,例如 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。因此,用<source>标记中的m3u8替换它,Chrome浏览器将正常播放它。 如果查看工作的m3u8,您可以看到编解码器是avc1.66.30,mp4a.40.2,我怀疑文件的实际编解码器是问题的原因。
我还尝试调用 media.canPlayType('application/vnd.apple.mpegURL'),它返回一个空字符串。

我目前正在使用一台ASUS Nexus 7进行测试,其操作系统为4.3。 - Yudong Li
你正在使用一个应用程序(使用WebView)或手机浏览器中工作吗?如果是,你使用的是哪个浏览器?默认的还是其他的? - Raptor
我没有在开发任何应用程序,只是使用Chrome浏览器构建一个HTML页面。 - Yudong Li
我已经进行了相同的搜索,但没有找到完全相同的问题。而且,更让我困惑的是为什么Chrome不能播放它,但在点击链接后,弹出式播放器可以正常播放。它们不是在同一个浏览器引擎下吗? - Yudong Li
显示剩余2条评论
1个回答

0
我认为它能够通过浏览器直接工作,但通过视频标签失败的原因是由于“跨域代理”(Safari对HSL没有此限制)。
请确保在您的.m3u8和.ts文件中添加Access-Control-Allow-Origin: *,这样应该可以解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接