【发布时间】:2018-06-06 13:58:42
【问题描述】:
我有一个功能,可以在上传视频之前将视频持续时间记录到控制台中。但是,我无法在addEventListener 函数之外获取视频持续时间,因为它返回NaN。尽管如此,在函数内部它成功记录了正确的视频持续时间,但如果我将它保存到变量中,它不会得到正确的值。
视频持续时间函数
var duration = 0; // Set default variable for storing video duration
if(vfile.type == "video/webm" || vfile.type == "video/mp4" || vfile.type == "video/ogg" || vfile.type == "video/mov"){
var video = document.createElement('video'); // Create video element
video.preload = 'metadata'; // Set preload attribute to metadata
window.URL.revokeObjectURL(video.src);
video.addEventListener('durationchange', function() { // Check for duration
console.log('Duration change', video.duration); // Successfully logs video duration into console e.g.: 13.012
duration = video.duration; // Set duration variable to video.duration
});
console.log("Duration: ", duration); // Returns back 0
}
video.src = URL.createObjectURL(vfile);
如果我在addEventListener 函数之外将变量duration 设置为video.duration,它会返回NaN。
总而言之,如何将变量 duration 设置为实际的视频时长,以便以后在脚本中使用?
【问题讨论】:
-
与您的问题无关的其他一些问题:您将
video.src设置在创建视频元素的代码块之外。此外,revokeObjectURL在设置video.src之前(以及在加载视频之前)运行,因此它实际上什么都不做。
标签: javascript variables video html5-video duration