【发布时间】:2020-01-23 19:09:27
【问题描述】:
首先,我试图从文件中提取视频时长,然后显示它,而无需实际上传文件。
当用户选择视频时 - 信息将显示在视频下方,包括文件名、文件大小、文件类型。无论我的技能多么糟糕 - 我无法获得显示的持续时间。我尝试了一些从其他站点以及这里找到的代码 sn-ps,但它们似乎都不起作用。只是试图找到一个可以完成任务的简单代码。
我尝试了 onloadedmetadata,但我认为这根本行不通。
请注意:我还在学习 javascript。
我还尝试了一些网站教程和一些通过 stackoverflow 找到的代码 sn-p
function uploadFunction(){
//Variables
var cVideo = document.getElementById("fileUp");
var txtInfo = "";
//function
if ('files' in cVideo){
if(cVideo.files.length == 0){
txtInfo = "Please select a video";
} else {
for (var v = 0; v < cVideo.files.length; v++){
txtInfo += "<br><strong>#" + (v+1) + " File Information:</strong> <br>";
var infoFile = cVideo.files[v];
if('name' in infoFile){
txtInfo += "File name: " +infoFile.name +"<br>";
}
if('size' in infoFile){
txtInfo += "File size: " +infoFile.size +" Bytes <br>";
}
if('type' in infoFile){
txtInfo += "File Type: "+infoFile.type +" <br>";
}
if('duration' in infoFile){
txtInfo += "Duration : "+infoFile.duration +"<br>";
}
}
}
}
document.getElementById("information").innerHTML = txtInfo ;
}
HTML
<input type="file" id="fileUp" name="fileUpload" multiple size="50" onchange="uploadFunction()">
<p id="information"></p>
根本无法获得持续时间。
【问题讨论】:
-
这有点令人费解,但您将必须阅读。使用 javascript 文件,将其转换为 blob,将其用作视频元素的源,然后等待视频上的
metadataloaded事件以获取视频文件的持续时间。我需要再次查看它是如何工作的...... -
正如@somethinghere 所指出的,您无法通过简单地使用文件选择器元素来获取视频持续时间,您还需要创建一个视频元素并等待它加载,然后您就有了持续时间。跨度>
-
此外,您输入中的
File实际上并不知道它是一个视频 - 因此所有视频特定的元数据都不存在。它只是告诉你大小是多少,所以你可以在做任何其他事情之前做一些相当基本的检查(比如阅读它)。
标签: javascript html