【web前端】用video标签获取视频的时长

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【web前端】用video标签获取视频的时长相关的知识,希望对你有一定的参考价值。

参考技术A 用户上传视频时,要获取用户所选的视频的时长,如果太长就提示用户不能上传
通过video标签来获取视频的时长

用js获取视频播放时长

用js实现读取本地mp4文件时长

利用h5 video标签加载视频文件,在读取duration就可以了

问题在于要更换文件,使用<input type="file" > 标签发现读取的文件路径是隐藏的c:/fakepath/xxx.mp4

给video更换src时候会提示找不到文件。。。

又找了很久,大多是加载flash控件然后通过flash再取,不太喜欢这么做。

如今这H5的时代感觉这个小功能应该不是问题,又想了想,之前做过js读取本地图片在web上做预览,估计读个视频应该也可以所以试了一下

var url = URL.createObjectURL(file);

获取文件的url,测试可以读取到 blob:null/32052613-1f41-4b77-b65d-c1a989d7fe32,又试了一下 video.src=url发现视频可以加载。那么duration就能读取到了。

 

 

<video style="display:none;" controls="controls" id="aa" oncanplaythrough="myFunction(this)"></video>
<input type="file" onchange="changeFile(this)" >

 

function myFunction(ele) {<span style="white-space:pre">
</span>console.log(Math.floor(ele.duration));}
function changFile(ele){
var video = ele.files[0];
var url = URL.createObjectURL(video);
console.log(url);
document.getElementById("aa").src=url;}


终于通过这种间接的方式把时长获取到了。

 

chrome内核的测试了没问题,其他 我先不考虑了








以上是关于【web前端】用video标签获取视频的时长的主要内容,如果未能解决你的问题,请参考以下文章

用js获取视频播放时长

微信小程序获取video视频的时长

layui上传视频并获得视频时长的方法

vue / js使用video获取视频时长

js获取video的播放时长

js调用video的播放时长