React获取视频时长
这几天遇到一个需求,上传mp4文件的时候需要获取一下视频的时长,超过一定限制前端做出限制,
结合网上的方案,写了一个获取上传的音视频文件时长的方法,具体代码如下
import React, { useState } from "react";
import { Upload, Button } from 'antd';
const Uploads = () => {
const [file, setFile] = useState({})
//上传之前
const beforeUpload = (file: any) => {
console.log(file);
setFile(file)
return true;
};
const onFinish = () => {
const url = window.URL.createObjectURL(file);
//经测试,发现audio也可获取视频的时长
const audioElement = new Audio(url);
let duration;
audioElement.addEventListener("loadedmetadata", function (_event) {
duration = audioElement.duration;
console.log(duration);
});
}
return (
上传
)
}
export default Uploads
其核心是在这块获取时长,当然,这块原生代码在vue中也可实现。
当指定的音频/视频的元数据已加载时,会发生 loadedmetadata 事件,
音频/视频的元数据包括:时长、尺寸(仅视频)以及文本轨道。