video标签监听事件

 <video   id="myVideo"    controls="controls"       poster='预览图'   preload="auto"    x5-playsinline="" playsinline="" webkit-playsinline=""  >
                   <source src="" type="video/mp4">
     </video>
<script>
//获取视频DOM元素
        var myVideo = document.getElementById("myVideo");

        myVideo.oncanplay = function(){
            console.log("准备就绪");    

        };
        //监听播放开始
        myVideo.addEventListener('play',function(){
            console.log("开始播放");
        });

        //监听播放结束
        myVideo.addEventListener('pause',function(){
            console.log("播放暂停");
        }); 

        //监听播放结束
        myVideo.addEventListener('ended',function(){
            console.log("播放结束");
        });
            
        //使用事件监听方式捕捉事件, 此事件可作为实时监测video 播放状态
        myVideo.addEventListener("timeupdate",function(){
            var timeDisplay;
            //用秒数来显示当前播放进度
            timeDisplay = Math.floor(myVideo.currentTime);
            console.log(Math.floor(myVideo.currentTime))

            //当视频播放到 4s的时候做处理
            if(timeDisplay == 4){
                    //处理代码
            }
        },false);   


</script>

video标签“事件”介绍
事件 描述
loadstart 浏览器开始在网上寻找媒体数据
progress 浏览器正在获取媒体数据
suspend 浏览器暂停获取媒体数据,但是下载过程并滑正常结束
abort 浏览器在下载完全部媒体数据之前中止获取媒体数据,但是并不是由错误引起的
error 获取媒体数据过程中出错
emptied video元素或audio元素所在网络突然变为未初始化状态可能原因有两个:1.载入媒体过程中突然发生一个致命错误

2.在浏览器正在选择支持的播放格式时,又调用 了load方法重新载入媒体

stalled 浏览器尝试获取媒体数据失败
play 即将开始播放,当执行了play方法时触发,或数据下载后元素被设为autoplay属性
pause 播放暂停,当执行了pause方式时触发
loadedmetadata 浏览器获取完毕媒体的时间长和字节数
waiting 播放过程由于得不到下一帧而暂停播放(例如下一帧尚未加载完毕),但很快就能够得到下一帧
canplay 浏览器能够播放媒体,但估计以当前的播放速率不能直接播放完毕,播放期间需要缓冲
canplaythrough 浏览器能够播放媒体,而且以当前播放速率能够将媒体播放完毕,不再需要进行缓冲
seeking seeking属性变为true,浏览器正在请求数据
seeked seeking属性变为false,浏览器停止请求数据
timeupdate 由于播放位置被改变,可能是播放过程中的自然改变,也可能是被人为的改变,或由于播放不能连续而发生的跳变
ended 播放结束后停止播放
ratechange defaultplaybackRate属性(默认播放速率)或playbackRate属性(当前播放速率)被改变
druationchange 播放时长被改变
volumechange volume属性(音量)被改变或muted属性(静音状态)被改变

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
是的,移动端的一些浏览器可能不支持视频的loadedmetadata事件。在这种情况下,您可以使用视频的timeupdate事件来获取第一帧图片。 1. 给video元素添加一个id属性,例如: ```html <video id="my-video" width="320" height="240"> <source src="video.mp4" type="video/mp4"> Your browser does not support the video tag. </video> ``` 2. 在JavaScript中获取video元素并监听它的timeupdate事件。在这个事件的回调函数中,您可以获取视频的第一帧图片,并将其设置为视频的封面。例如: ```javascript var video = document.getElementById('my-video'); video.addEventListener('timeupdate', function() { if (this.currentTime >= 0.1) { var canvas = document.createElement('canvas'); canvas.width = this.videoWidth; canvas.height = this.videoHeight; canvas.getContext('2d').drawImage(this, 0, 0, canvas.width, canvas.height); var dataUri = canvas.toDataURL(); this.setAttribute('poster', dataUri); this.removeEventListener('timeupdate', arguments.callee); } }); ``` 这段代码中,我们监听video元素的timeupdate事件,并在回调函数中判断视频是否已经播放了0.1秒以上。如果是,则获取视频的第一帧图片,并将其设置为video元素的poster属性值。此外,我们还在回调函数中移除了timeupdate事件监听器,以避免重复获取第一帧图片。 需要注意的是,在移动端一些浏览器中,timeupdate事件的触发频率可能较低,因此获取第一帧图片的时间可能会比较长。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值