视频缩略图生成
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>视频缩略图生成</title>
</head>
<body>
<div id="message"></div>
<input type="file" accept="video/*"/>
<video id="video" controls hidden ></video>
<button id="btn1">读取信息</button>
<canvas id="cv" width="1450" height="950"></canvas>
<script src="main.js"></script>
</body>
</html>
JavaScript
String.prototype.toHHMMSS = function () {
var sec_num = parseInt(this, 10);
var hours = Math.floor(sec_num / 3600);
var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
var seconds = sec_num - (hours * 3600) - (minutes * 60);
if (hours < 10) {hours = "0"+hours;}
if (minutes < 10) {minutes = "0"+minutes;}
if (seconds < 10) {seconds = "0"+seconds;}
return hours+':'+minutes+':'+seconds;
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
var tempfile;
(function localFileVideoPlayer() {
'use strict'
var URL = window.URL || window.webkitURL
var displayMessage = function (message, isError) {
var element = document.querySelector('#message')
element.innerHTML = message
element.className = isError ? 'error' : 'info'
}
var playSelectedFile = function (event) {
tempfile = this.files[0]
var type = tempfile.type
var videoNode = document.querySelector('video')
var fileURL = URL.createObjectURL(tempfile)
videoNode.src = fileURL
}
var showFileInfo =async function(event){
var videoNode = document.querySelector('video')
var filename='文件名: ' + tempfile.name
var filesize="大小: " + (tempfile.size/1024/1024).toFixed(2) + "MB"
var filetype="格式: " + tempfile.type
var filepixel="分辨率:" + videoNode.videoWidth + "x" + videoNode.videoHeight
var fileduration="时长: " + videoNode.duration.toString().toHHMMSS()
//alert(str);
var duration=videoNode.duration
var canvas=document.getElementById('cv');
var ctx=canvas.getContext('2d');
ctx.clearRect(0,0,canvas.width,canvas.height)
ctx.fillStyle="#EEEEEE";
ctx.fillRect(0,0,canvas.width,canvas.height);
//ctx.drawImage(img, 0, 0, 400, 400);
ctx.font = 'bold 11px 微软雅黑';
ctx.lineWidth = 3;
ctx.strokeStyle = 'black';
ctx.fillStyle = 'white';
...