html上传视频截取第一帕
- 监听文件变化
- 读取文件数据
FileReader.readAsDataURL
将上传的文件转为Base64
格式- 将
video
绘制到canvas
上,截取第一帕,canvas.toDataURL
生成图片
<input type="file" class="uploader-video" accept="video/*" multiple>
$(document).on('change','.uploader-video',function () {
let file = this.files; //读取文件
console.log(file);
let reader = new FileReader();
reader.readAsDataURL(file[0]);
reader.addEventListener('loadend', ()=> {
let src = reader.result;
let video = document.createElement('video');
video.src = src
// 视频加载
video.onloadeddata = ()=> {
let canvas = document.createElement('canvas');
let ctx = canvas.getContext("2d")
ctx.fillStyle = '#ffffff';
//定义宽高,1920*1080的比例 = 1.77777777777778
let width = 640,
height = 360;
canvas.width = width;
canvas.height = height ;
ctx.drawImage(video, 0, 0, width, height);//将video视频绘制到canvas中
let img = canvas.toDataURL('image/webp',0.5);//0.5压缩比例,可以选0-1质量区间
console.log(img);
}
})
})
遇到的问题
- 要创建
document.createElement('video')
,要传入video
对象,直接传入视频地址,canvas
会报错的 - 判断视频是否加载完成用,
onloadeddata
toDataURL
参数为PNG
时不支持传图片质量,只能image/jpeg
或image/webp
,我一开始用的png
,捣鼓了半天,质量就是不变
上传图片压缩,大同小异,类似,换汤不药,new Imgae()
上传图片压缩参考:https://www.blyoo.com/5071.html
Video 对象属性
属性 | 描述 |
---|---|
audioTracks | 返回表示可用音频轨道的 AudioTrackList 对象。 |
autoplay | 设置或返回是否在就绪(加载完成)后随即播放视频。 |
buffered | 返回表示视频已缓冲部分的 TimeRanges 对象。 |
controller | 返回表示视频当前媒体控制器的 MediaController 对象。 |
controls | 设置或返回视频是否应该显示控件(比如播放/暂停等)。 |
crossOrigin | 设置或返回视频的 CORS 设置。 |
currentSrc | 返回当前视频的 URL。 |
currentTime | 设置或返回视频中的当前播放位置(以秒计)。 |
defaultMuted | 设置或返回视频默认是否静音。 |
defaultPlaybackRate | 设置或返回视频的默认播放速度。 |
duration | 返回视频的长度(以秒计)。 |
ended | 返回视频的播放是否已结束。 |
error | 返回表示视频错误状态的 MediaError 对象。 |
height | 设置或返回视频的 height 属性的值。 |
loop | 设置或返回视频是否应在结束时再次播放。 |
mediaGroup | 设置或返回视频所属媒介组合的名称。 |
muted | 设置或返回是否关闭声音。 |
networkState | 返回视频的当前网络状态。 |
paused | 设置或返回视频是否暂停。 |
playbackRate | 设置或返回视频播放的速度。 |
played | 返回表示视频已播放部分的 TimeRanges 对象。 |
poster | 设置或返回视频的 poster 属性的值。 |
preload | 设置或返回视频的 preload 属性的值。 |
readyState | 返回视频当前的就绪状态。 |
seekable | 返回表示视频可寻址部分的 TimeRanges 对象。 |
seeking | 返回用户当前是否正在视频中进行查找。 |
src | 设置或返回视频的 src 属性的值。 |
startDate | 返回表示当前时间偏移的 Date 对象。 |
textTracks | 返回表示可用文本轨道的 TextTrackList 对象。 |
videoTracks | 返回表示可用视频轨道的 VideoTrackList 对象。 |
volume | 设置或返回视频的音量。 |
width | 设置或返回视频的 width 属性的值。 |
Video 对象方法
方法 | 描述 |
---|---|
addTextTrack() | 向视频添加新的文本轨道。 |
canPlayType() | 检查浏览器是否能够播放指定的视频类型。 |
load() | 重新加载视频元素。 |
play() | 开始播放视频。 |
pause() | 暂停当前播放的视频。 |