js获取上传⾳视频的时长
获取上传视频路径,将该路径放⼊video标签,获取视频时长
⽅式⼀:隐藏⼀个⾳频标签,播放获取。
<video controls="controls" id="videoData" oncanplaythrough="geTime(this)"></video>
<input type="file" onchange="changeFile(this)" />
<script type="text/JavaScript">
function geTime(ele) {
var hour = parseInt((ele.duration)/3600);
电冰箱不制冷var minute = parseInt((ele.duration%3600)/60);
var second = il(ele.duration%60);
console.log("这段视频的时长为:"+hour+"⼩时,"+minute+"分,"+second+"秒");
}
function changeFile(ele){
var video = ele.files[0];
var url = ateObjectURL(video);
console.log(url);
}
</script>
⽅式⼆;通过new Audio的⽅式获取:
<input type="file" onchange="changeFile(this)" >
<script>
function changeFile(ele) {
var content = ele.files[0]
var url = ateObjectURL(content);//获取录⾳时长
var audioElement = new Audio(url);//audio也可获取视频的时长
var duration;
audioElement.addEventListener("loadedmetadata", function (_event) {
duration = audioElement.duration;
console.log(duration/60);
});
}
</script>
说明:
ateObjectURL()⽅法会创建⼀个 DOMString,其中包含⼀个表⽰参数中给出的对象的URL。这个 URL 的⽣命周期和创建它的窗⼝中的 document 绑定。这个新的URL 对象表⽰指定的 File 对象或 Blob 对象。(个⼈感觉可以把对象转换成url使⽤,⼗分灵活⽅便,特别是对于⽂件对象)。
2.loadedmetadata 当指定的⾳频/视频的元数据已加载时,会发⽣ loadedmetadata 事件。⾳频/视频的元数据包括:时长、尺⼨(仅视频)以及⽂本轨道。
上传之前限制⼀下视频的时长
const gettime = (video, size) => {
学习的力量const promise = new Promise(resolve => {
video.addEventListener('canplaythrough', e => {
console.log(58, e, e.target.duration, size)
if (e.target.duration <= size) {
resolve(true)
} else {
resolve(false)
周末短信祝福语}
})
建军多少周年了})
return promise
}
什么是居住证export const checkSize = async (files, size) => {
// console.log(56, Number.isNaN(Number(size)), size)
if (!files || !files[0]) return false
/
/ 这⼀条是正式服务器不需要这段所以当size 为undefined 时默认返回 true
if (Number.isNaN(Number(size))) return true
const checktimevideo = ElementById('checktimevideo')
if (checktimevideo) {
veChild(checktimevideo)
}
const video = ateElement('video')
const url = ateObjectURL(files[0])
video.src = url
video.id = 'checktimevideo'
家用前置过滤器video.style.display = 'none'
document.body.appendChild(video)
return await gettime(video, size)
}
// 这个函数调⽤的时候也⾮常简单
<input
type='file'
onChange = { async e => {
e.persist() // 这个是⽤来处理 SyntheticEvent 问题的
const isok = await checkSize(e.target.files[0], 200) // 200 表⽰200秒} }
/>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论