有啥方法可以在上传之前获取视频时长吗?

Posted

技术标签:

【中文标题】有啥方法可以在上传之前获取视频时长吗?【英文标题】:Is there any way we can get video duration before upload?有什么方法可以在上传之前获取视频时长吗? 【发布时间】:2018-05-01 23:45:45 【问题描述】:

我想限制用户只上传时长不超过 30 秒的视频。有什么办法吗?

【问题讨论】:

见***.com/questions/29285056/… Get video duration when input a video file的可能重复 另见***.com/questions/27550529/… 您可以在这里找到答案 [video-upload-check-only-30-second-video-will-upload] (***.com/questions/28585277/…) 【参考方案1】:

试试这个

<form action="#" method="post" enctype="multipart/form-data">
  File: <input type="file" name="fup" id="fup" /><br>
  Duration: <input type="text" name="f_du" id="f_du" size="5" /> seconds<br>
  <input type="submit" value="Upload" />
</form>
<audio id="audio"></audio>

<script>
// Code to get duration of audio /video file before upload - from: http://coursesweb.net/

//register canplaythrough event to #audio element to can get duration
var f_duration =0;  //store duration
document.getElementById('audio').addEventListener('canplaythrough', function(e)
  //add duration in the input field #f_du
  f_duration = Math.round(e.currentTarget.duration);
  document.getElementById('f_du').value = f_duration;
  URL.revokeObjectURL(obUrl);
);

//when select a file, create an ObjectURL with the file and add it in the #audio element
var obUrl;
document.getElementById('fup').addEventListener('change', function(e)
  var file = e.currentTarget.files[0];
  //check file extension for audio/video type
  if(file.name.match(/\.(avi|mp3|mp4|mpeg|ogg)$/i))
    obUrl = URL.createObjectURL(file);
    document.getElementById('audio').setAttribute('src', obUrl);
  
);
</script>

【讨论】:

以上是关于有啥方法可以在上传之前获取视频时长吗?的主要内容,如果未能解决你的问题,请参考以下文章

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

iPhone:如何获取从库中选择的视频时长?

uiimagepickercontroller 视频时长 - 照片库

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

Java获取视频的大小时长

如何在 PHP 中获取视频时长、尺寸和大小?