1. 程式人生 > >通過url獲取視訊的時長

通過url獲取視訊的時長

最近專案中遇到一個問題,需要儲存上傳視訊的時長,但以前上傳的時候資料庫都沒有儲存這個資料,所以現在要更新這個欄位。

一開始想通過java程式碼來實現這個功能,但百度了很久,只有一種方法,那就是先要下載到本地,然後再一個一個的遍歷查詢。

覺得這種方法如果是小視訊還行,大視訊的話就太花時間了。於是想到了通過html5的video標籤來實現這個功能。

下面就先說一下基本思路:

1.後臺先把需要查詢的視訊url放到一個List<String>裡傳到前端頁面.

2.通過js來遍歷這個list,把每個值賦值到video裡.

3.通過video的duration屬性來得到視訊的時長.

測試下來,遍歷了10個url地址,差不多15秒

下面是前端的程式碼,有不懂的歡迎留言提問.

<!DOCTYPE html>
<html>
<script type="text/javascript" th:src="@{../assets/jquery/jquery.min.js}"></script>
<head>
<meta charset="UTF-8">
</head>
<body>
	<button onclick="test()">video</button>
	<ul th:each="videoUrl:${videoList}" id="ulVideo" style="display:none">
		<li th:text=${videoUrl}></li>
	</ul>
	<video style="display:none" controls="controls"  name="media" id="divVideo" >
		<source type="video/mp4">
	</video>
</body>
<script th:inline="javascript" >
	var interval;
	var length = 0;
	var lis =  [[${videoList.size()}]];;
	var index = 0;
	function test(){
		document.getElementById("divVideo").src=$("ul li").eq(index).text();
		interval = setInterval(test2,1000)
	}
	function test2(){
		if(document.getElementById("divVideo").readyState == 4){
			length=parseInt($("#divVideo").get(0).duration);
			console.log(length);
			clearInterval(interval);
			index++;
			if(index < lis){
				test();
			}else{
				console.log("end");
			}
		}else{
			console.log("載入中...");
		}
	}
</script>
</html>
頁面效果和log日誌