当 HTML5 视频暂停时显示海报图像或暂停按钮?

use*_*130 3 html javascript video ipad ios

嗨,我正在为 iPad 编写一个本地站点,并且有一个没有控件的视频,单击时可以播放和暂停。视频暂停时是否可以显示海报图像?或者在中间显示一个暂停按钮?这是我用于播放和暂停的代码:

<script type='text/javascript'>//<![CDATA[ 
window.onload=function(){
var overlay = document.getElementById('video-overlay');
var video = document.getElementById('video');
var videoPlaying = false;
overlay.onclick = function() {
if (videoPlaying) {
    video.pause();
    videoPlaying = false;
}
else {
    video.play();
    videoPlaying = true;
}
}
}//]]>  

</script>
Run Code Online (Sandbox Code Playgroud)

以及视频的 HTML

<div id='video-overlay'></div>
<video width="768" height="432" poster="thumbnail2.jpg" id='video'>
<source src="PhantomFuse3_TechVideo_h264.mp4"  type="video/mp4">
</video>
Run Code Online (Sandbox Code Playgroud)

Tom*_*mog 6

另一种解决方案是调用:

video.load()

它将重新显示海报图像。它将在下次交互时重新启动视频,但您可以保存时间戳并根据需要从那里开始播放。


Rok*_*gar 2

您必须在视频上注册暂停事件。

像这样的东西: JSFiddle 代码

当然,您应该根据需要修改它并添加一些结构。不过还没在 iPad 上尝试过。另请注意:注册点击将导致点击事件出现 300 毫秒的延迟。您应该查看触摸设备的 touchstart 事件并注册 click 和 touchstart。

var overlay         = document.getElementById('video-overlay'),
    video           = document.getElementById('video'),
    videoPlaying    = false;

function hideOverlay() {
    overlay.style.display = "none";
    videoPlaying = true;
    video.play();
}

function showOverlay() {
    // this check is to differentiate seek and actual pause 
    if (video.readyState === 4) {
        overlay.style.display = "block";
        videoPlaying = true;
    }
}

video.addEventListener('pause', showOverlay);
overlay.addEventListener('click', hideOverlay);
Run Code Online (Sandbox Code Playgroud)