作者热门文章
- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我正在用 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);
}
有没有办法做到这一点?如果不能,有哪些替代方案可以帮助我?
最佳答案
在modern browsers , 您可以使用 URL API 的 URL.createObjectURL()
使用非附加视频元素来加载文件的内容。
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>
关于javascript - 输入视频文件时获取视频时长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29285056/
我正在做一个从 Apple HealthKit 读取每日步数和 sleep 数据的应用程序。 对于 步骤 ,这很容易,因为它是 HKQuantityType ,所以我可以在其上应用 HKStatist
我仅使用 youtube-dl 从 youtube 视频中提取音频. 我想在下载后将元数据(即艺术家姓名和歌曲名称、年份、专辑、持续时间、流派)写入 mp3/m4a 文件。 我的尝试是从以下代码开始的
我是一名优秀的程序员,十分优秀!