测试浏览器是否支持非静音播放视频

时间:2018-01-26 16:22:49

标签: javascript android ios html5 html5-video

如何测试视频是否在线而不被静音?

我自己通过创建一小段自动播放小视频(20kb)的脚本尝试了这一点。根据视频是否正在播放'返回布尔值。

似乎工作正常。在iOS上,它返回false。在桌面上它返回true。

但是,我想知道这是否是运行测试的正确方法。

JS:

var $video = $('video');

$video.on( 'loadstart', function(){
  setTimeout(function(){
    alert( isUnmutedInlineSupported() ? 'supported' : 'unsupported' );
  }, 500);
});

function isUnmutedInlineSupported(){
  if( !$video[0].paused && $video[0].currentTime > 0 ) {
    //playsinline unmuted supported
    return true;
  } else {
    //playsinline unmuted unsupported
    return false;
  }
}

HTML:

<video playsinline loop autoplay poster="https://placehold.it/1600x900">
  <source src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/214327/html5-video-sound-test.mp4" type="video/mp4" />
</video>

https://codepen.io/hassforshort/pen/baXrXo

1 个答案:

答案 0 :(得分:0)

这是检查视频是否已启动的最佳方法。由webkit推荐SQLfiddle

var promise = document.querySelector('video').play();

if (promise !== undefined) {
    promise.catch(error => {
        // Auto-play was prevented
        // Show a Play Button to let the user manually start playback
    }).then(() => {
        // Auto-play started
    });
}

您的代码可能适用于某些桌面浏览器,但它无法在移动设备上运行。不同的设备对视频有不同的支持,只有少数设备支持带声音的自动播放视频。