当前位置: 首页 > 面试题库 >

输入视频文件时获取视频时长

康文昌
2023-03-14
问题内容

我正在做一个使用HTML和Javascript的项目,它将与本地文件一起在本地运行。我需要通过输入选择一个文件,获取文件信息,然后决定是否将其添加到列表中并进行复制。如果我决定使用它,则必须将其放在队列中以备后用。否则,我将丢弃并选择另一个文件。

我面临的问题是我无法找到一种仅通过在输入中选择视频持续时间来获得视频持续时间的方法。

我进行了很多搜索,但没有找到任何方法来获取持续时间。在下面的这段代码中,我尝试使用“ file.duration ”,但没有用,它只返回“
undefined ”。

这就是我的意见,正如您所看到的那样。

<div id="input-upload-file" class="box-shadow">
   <span>upload! (ღ˘⌣˘ღ)</span> <!--ignore the text face lol -->
   <input type="file" class="upload" id="fileUp" name="fileUpload" onchange="setFileInfo()">
</div>

这就是我用来获取所有信息的功能。

function setFileInfo(){
  showInfo(); //change div content
  var file = document.getElementById("fileUp").files[0];
  var pid =  1;
  var Pname = file.name;
  Pname = Pname.slice(0, Pname.indexOf(".")); //get filename without extension
  var Ptype = file.type;
  var Psize = bytesToSize(file.size); //turns into KB,MB, etc...
  var Pprior = setPriority(Ptype); //returns 1, 2 or 3 
  var Pdur = file.duration;
  var Pmem = getMemory(Psize); //returns size * (100 || 10 || 1)
  var Pown = 'user';
  /* a lot of stuff throwing this info to the HTML */
  console.log(Pdur);
}

有办法吗?如果没有,有什么替代方案可以帮助我?


问题答案:

在现代浏览器中,您可以将URL APIURL.createObjectURL()与未附加的视频html" target="_blank">元素一起使用来加载文件的内容。

var myVideos = [];



window.URL = window.URL || window.webkitURL;



document.getElementById('fileUp').onchange = setFileInfo;



function setFileInfo() {

  var files = this.files;

  myVideos.push(files[0]);

  var video = document.createElement('video');

  video.preload = 'metadata';



  video.onloadedmetadata = function() {

    window.URL.revokeObjectURL(video.src);

    var duration = video.duration;

    myVideos[myVideos.length - 1].duration = duration;

    updateInfos();

  }



  video.src = URL.createObjectURL(files[0]);;

}





function updateInfos() {

  var infos = document.getElementById('infos');

  infos.textContent = "";

  for (var i = 0; i < myVideos.length; i++) {

    infos.textContent += myVideos[i].name + " duration: " + myVideos[i].duration + '\n';

  }

}


<div id="input-upload-file" class="box-shadow">

  <span>upload! (ღ˘⌣˘ღ)</span>

  <input type="file" class="upload" id="fileUp" name="fileUpload">

</div>

<pre id="infos"></pre>


 类似资料:
  • 我想获取正在上传到系统中的音频/视频文件的持续时间。早些时候,我使用了,但我想它不再被维护了,因为没有与此兼容的python 3模块。 还有其他轻量级替代品吗? 如果我想写一些自己的东西来完成它,先决条件是什么?

  • 问题内容: python中是否有一种方法可以获取视频文件或其他可实现此目标的库的尺寸?相当于一个或什么?谢谢。 问题答案: 在我的上一家公司中,我们遇到了类似的问题,但我找不到任何python库来执行此操作。因此,我最终使用了来自python的mediainfo,media info也具有命令行选项,并且很容易解析输出,因此实际上,使用media- info的python模块就足够了。它具有进一步

  • 我正在开发视频流应用程序,其中我需要捕获前置摄像头视频帧并编码然后传输到另一端,典型的流程是这样的 AVCapture会话- 它工作正常,我已将kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange设置为帧格式。 还可以预览用于显示预览的图层, 当设备方向发生变化时,问题就来了,如果设备从纵向移动到横向,那么在另一端的帧会被旋转90,我希望因为方向在预览层中

  • 本文向大家介绍opencv3/C++实现视频读取、视频写入,包括了opencv3/C++实现视频读取、视频写入的使用技巧和注意事项,需要的朋友参考一下 视频读取 视频读取,主要利用VideoCapture类下的方法打开视频并获取视频中的帧,具体示例如下: capture.open()的参数为0时为读取摄像头: 视频写入 通过摄像头获取视频,然后通过capture.get(CV_CAP_PROP_F

  • https://www.googleapis.com/youtube/v3/search?part=snippet 但对于某些频道,它不获取视频,只获取播放列表。如果你转到Youtube频道并点击视频链接,它将显示所有频道的视频。在视频链接下会有一个发布的部分。示例: https://www.googleapis.com/youtube/v3/search?part=snippet 有人知道我怎么

  • 读取视频信息 如需获取分P,需要以不同页码多次调用本接口 — @fython 调用地址 http://api.bilibili.cn/view 需要 App Key 参数 字段 必选 类型 说明 id true int AV号 page true int 页码 fav false int 是否读取会员收藏状态 (默认 0) 返回 返回值字段 字段类型 字段说明 play int 播放次数 revi