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

layui官方上传视频时并没直接提供获取视频时长的方法,需要我们间接获得

HTML增加一个<video>标签,因为video标签可以帮我们获取视频时长

<video id="videoattr" width="250" height="100" ></video>

当然,你也可以设置隐藏。

然后JS就可以利用<video>的duration来得到时长。

  1. choose:function(obj){
  2. //预读本地文件示例,不支持ie8
  3. layer.load(2);
  4. obj.preview(function(index, file, result){
  5. var url = URL.createObjectURL(file);//把file转成URL
  6. $('#videoattr').attr('src', url); //视频链接
  7. var timer = setTimeout(function(){
  8. layer.close(layer.index);
  9. $('#add').css("visibility","visible"); //一开始先将确认上传按钮隐藏,得到视频时长后才开放
  10. clearTimeout(timer);
  11. },1000);
  12. });
  13. },

一开始先将确认上传按钮隐藏,防止还没得到视频时长就已经开始上传导致参数错误等问题。

另外,必须设置setTimeout定时器,因为代码的执行是并行的,防止<video>还没加载完就向它获取时长,这样得到的结果将会是NaN

  1. before: function(obj){
  2. var courseId = $("#courseId").val();
  3. var video_time = document.getElementById("videoattr").duration;//视频时长
  4. var time_length=Math.ceil(video_time);//转为整型
  5. this.data={courseId: courseId, time_length:time_length};//动态改变传的参数
  6. layer.load();
  7. },

最重要的一句

  1. var video_time = document.getElementById("videoattr").duration;//视频时长
  2. var time_length=Math.ceil(video_time);//转为整型

这样,要获得视频时长作参数就搞定了。