小码哥的IT人生

html5 + js 获取视频播放进度及播放百分比的方法【video控件】

HTML5基础 2022-06-08 14:52:35小码哥的IT人生shichen

本文示例基于video控件进行视频播放,在此基础上再进行视频相关属性操作,具体如下:

1.HTML页面

<div class="course-video">
	<video id="video" width="100%" src="${courseSection.videoUrl}" height="100%" controls preload>
		<source  type="video/mp4"/>
	</video>
	<div id="progress">
		<div id="bar"></div>
	</div>
	<h3 id="text-progress">0%</h3>
	<b id="beginTime">0.00</b>
	<b id="lastTime">0.00</b>
</div>

2.js代码

// 根据id查找指定对象
	myVid = document.getElementById("video");
	var bgTime = document.getElementById("beginTime");
	var lsTime = document.getElementById("lastTime");
	var elem = document.getElementById("text-progress");
	//执行获取方法
	getvideoprogress();
	function getvideoprogress() {
		//设置循环,没10毫秒执行一次
		var id = setInterval(frame,10);
		function frame() {
			// 使用duration获取视频总时长,使用toFixed保留两位小数
			lsTime.innerHTML = myVid.duration.toFixed(2) + "s";
			// 使用currentTime获取视频当前播放位置
			bgTime.innerHTML = myVid.currentTime.toFixed(2) + "s";
			//获取当前位置占总视频百分比并显示
			var bili = (myVid.currentTime.toFixed(2) / myVid.duration.toFixed(2)) * 100;
			elem.innerHTML = bili.toFixed(0) + "%";
		}
	}

完整实例:

<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>获取视频播放进度及播放百分比</title>
</head>
<body>
<div class="course-video">
	<video id="video" width="100%" src="demo.mp4" height="100%" controls preload>
		<source  type="video/mp4"/>
	</video>
	<div id="progress">
		<div id="bar"></div>
	</div>
	<h3 id="text-progress">0%</h3>
	<b id="beginTime">0.00</b>
	<b id="lastTime">0.00</b>
</div>
<script>
	// 根据id查找指定对象
	myVid = document.getElementById("video");
	var bgTime = document.getElementById("beginTime");
	var lsTime = document.getElementById("lastTime");
	var elem = document.getElementById("text-progress");
	//执行获取方法
	getvideoprogress();
	function getvideoprogress() {
		//设置循环,没10毫秒执行一次
		var id = setInterval(frame,10);
		function frame() {
			// 使用duration获取视频总时长,使用toFixed保留两位小数
			lsTime.innerHTML = myVid.duration.toFixed(2) + "s";
			// 使用currentTime获取视频当前播放位置
			bgTime.innerHTML = myVid.currentTime.toFixed(2) + "s";
			//获取当前位置占总视频百分比并显示
			var bili = (myVid.currentTime.toFixed(2) / myVid.duration.toFixed(2)) * 100;
			elem.innerHTML = bili.toFixed(0) + "%";
		}
	}
</script>
</body>
</html>

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

PS:这里附带一个笔者常用的MP4格式动画测试视频:

demo_donghua_.rar
e89e8b3620478375013e632f9641af3d.rar (2.04 MB)

版权所有 © 小码哥的IT人生
Copyright © phpcodeweb All Rights Reserved
ICP备案号:苏ICP备17019232号-2  

苏公网安备 32030202000762号

© 2021-2024