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

Joe*_*sky 13 javascript mobile android http-live-streaming

我想检测手机/平板电脑是否可以播放HTTP直播(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')
    );
}
Run Code Online (Sandbox Code Playgroud)

但它在某些三星浏览器(股票,海豚等)上效果不佳 - 它返回false(因为canPlayTypes是空字符串)但是它能够播放视频.

是否有任何防弹(ish)解决方案可用于检测此类流媒体支持?

Nie*_*els 1

我不确定目前是否有可用的防弹解决方案。

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

所以基本上你创建了一个你想要支持的格式列表并从中进行测试。该canPlayType方法还允许您指定哪个编解码器。您应该这样做,因为仅测试 WebM 可能不会产生所需的结果,例如:

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

执行此操作后,您通常应该得到三种不同的响应:“可能”、“mabye”或“”(空字符串含义:不支持)。

您可能会发现一些有用的资源:

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

Mozilla 媒体格式列表

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

Modernizr HTML 视频检测