在Android(JS)上自动播放HTML5视频

时间:2017-12-27 09:55:17

标签: javascript android html5

我知道有类似的主题,但要么是过时的,要么是JAVA代码的答案。

似乎android不再允许自动播放,而是需要用户手势。虽然,我想确保在我停止尝试之前用完所有(合理的)选项。

播放在iOS和桌面上完美运行。

现在有没有办法在Android设备上进行自动播放?

视频标记

<video
    muted="true"
    playsinline="true"
    loop="true"
    class="bg-video"
    autoplay="true"
>
    <source
        src="videos/low-android-480.mp4"
        class="bg-video-source"
        type="video/mp4" // Tried also without specifying the type
    />
</video>


- 黑客尝试发送用户手势(不工作)

const event = new MouseEvent("touchstart", {
    view: window,
    bubbles: true,
    cancelable: true,
});

window.addEventListener("touchstart", function videoStart() {
    videoElement.play();
    // remove from the window and call the function we are removing
    window.removeEventListener("touchstart", videoStart);
}); 

...

if (videoElement.paused) {
    window.dispatchEvent(event);
}

- 只需致电videoElement.play(); (无效)


更新#1 像这样修改的hack示例dispatchEvent部分

window.setTimeout(() => {
    window.dispatchEvent(event);
});

在Android Chrome浏览器上播放视频。但不是在Native浏览器上。仍然在寻找那个解决方案...


更新#2 这是Jordi Castilla的答案中提到的文章的一个有用的片段。它让我发现实际的videoElement.play()承诺在Android Native浏览器上被拒绝了。

    const promise = videoElement.play();

    if (promise !== undefined) {
        promise.then(_ => {
            // Autoplay started!
            alert("started autoplay");
        }).catch(error => {
            // Autoplay was prevented.
            alert("failed autoplay");
            // Show a "Play" button so that user can start playback.
        });
    } 

1 个答案:

答案 0 :(得分:0)

好的,因为没有其他人在回答,对于有类似斗争的人来说,判决是这样的:

  • 您无法在Android原生浏览器上自动播放视频
  • 您无法在iOS 9.x及更低版本上自动播放视频

但是,对于Android Chrome浏览器, UPDATE#1 应该是如何在那里进行自动播放的指南。

快乐的编码!

N.B。我希望有人在这里证明我错了