移动设备上的HTTP直播流检测

13

我想检测移动电话/平板电脑是否能播放HTTP Live Streaming(m3u8)。

我目前正在使用这个脚本进行测试:

function isHLSEnabled() {
    var videoElement = document.createElement('video'),
        canPlayAppMpeg = videoElement.canPlayType('application/x-mpegURL'),
        canPlayAppleMpeg = videoElement.canPlayType('vnd.apple.mpegURL');

    return (
        (canPlayAppMpeg == 'probably' || canPlayAppMpeg == 'maybe')
        || (canPlayAppleMpeg == 'probably' || canPlayAppleMpeg == 'maybe')
    );
}

但在一些三星浏览器(原装浏览器、海豚等)上效果不佳——它会返回false(因为canPlayTypes是空字符串),但实际上它仍然可以播放视频。

有没有什么相对可靠的解决方案来检测这种流媒体支持呢?


这仍然是Android 5.0和Android 5.1上的股票浏览器的问题。Chrome播放正常。 - easwee
我没有尝试过,但如果您将视频元素的src设置为流src并检查视频是否正在播放,它是否有效? - Nimmi
1个回答

1

我不确定此时是否有防弹解决方案可用。

使用视频元素的canPlayType方法是唯一真正“有效”的方法。现代浏览器支持大约5/6种媒体格式。

因此,基本上您需要创建要支持的格式列表并对其进行测试。 canPlayType方法允许您还指定编解码器。您应该这样做,因为仅测试WebM可能不会得到所需的结果,例如:

element.canPlayType('video/webm; codecs="vp9"')

这样做后,您通常会得到三种不同的响应:"probably"、"maybe"或""(空字符串表示:不支持)。

您可能会发现以下一些资源很有用:

Mozilla提供了主流格式/编解码器列表:

Mozilla Media Format List

Modernizr是一个框架,将测试大多数html5视频格式的支持情况。您可能还想查看他们的源代码以获取html5视频检测。

Modernizr HTML视频检测


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