【问题标题】:HTTP Live Streaming detection on mobiles手机上的 HTTP 实时流检测
【发布时间】:2014-06-08 13:04:21
【问题描述】:

我想检测手机/平板是否可以播放 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 是空字符串)但它能够播放视频。

是否有任何防弹(ish)解决方案来检测这种流媒体支持?

【问题讨论】:

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

标签: javascript android mobile http-live-streaming


【解决方案1】:

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

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

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

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

这样做后,您应该通常会得到三种不同的响应:“可能”、“mabye”或“”(空字符串含义:不支持)。

一些您可能会觉得有用的资源:

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

Mozilla Media Format List

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

Modernizr HTML video detect

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 2020-10-07
    相关资源
    最近更新 更多