上传文件时获取音视频文件时长和文本文件字数

获取音视频文件时长和文本文件字数

最近有个需求,要求上传文件时获取音视频文件时长和文本文件字数🐶。

发现这样的冷门资料不多,特做个记录。本文忽略文件上传功能,只封装核心的工具函数,拿走即用

先看结果,很快获取到视频时长,其他的测试正常,放心食用😄

一、获取音视频文件时长

js 复制代码
// 计算音频视频时长
export function getFileDuration(file: any) {
  return new Promise((resolve: any) => {
    let duration: number | string = 0;
    const url = URL.createObjectURL(file);
    const element = document.createElement(file.type.startsWith('video/') ? 'video' : 'audio');
    element.onloadedmetadata = () => {
      duration = element.duration;
      resolve(duration ? Math.ceil(duration) : 0);
      URL.revokeObjectURL(url); // 释放内存
    };
    element.onerror = (error) => {
      console.error('获取时长失败:', error);
      duration = 0;
      resolve(duration);
    };
    element.src = url;
  });
}

二、计算文本文件字数

js 复制代码
// 计算文本文件字数
export function getTxtWords(file: any) {
  return new Promise((resolve: any) => {
    const reader = new FileReader();
    reader.onload = (event: any) => {
      const fileContent = event.target.result;
      const words = fileContent.trim(); // 去空格
      resolve(words.length);
    };
    reader.onerror = (error) => {
      console.error('Error reading file:', error);
      resolve(0);
    };
    reader.readAsText(file);
  });
}
相关推荐
学术头条34 分钟前
清华团队开源SCAIL-2:角色动画告别骨骼依赖,端到端还原视频中动作细节
人工智能·科技·机器学习·ai·开源·音视频·agi
做萤石二次开发的哈哈1 小时前
AI 陪护机器人硬件如何接入萤石ERTC 实现实时通话?
人工智能·音视频·实时音视频·萤石开放平台
禹亮科技2 小时前
上海临港100㎡大型跨国会议室音视频集成方案(思科Webex+思必驰AI音频)
人工智能·音视频·思必驰吸顶麦·禹亮科技
爱吃骨头的鱼儿2 小时前
h264码流结构
音视频·h.264
大蚂蚁2号3 小时前
深度解析:2026短视频批量生成底层技术、架构演进与企业落地实战
架构·音视频
sitellla5 小时前
Pydub:用 Python 处理音频,不写废话
开发语言·python·其他·音视频
大蚂蚁2号7 小时前
短视频批量生成技术深度解析与实战方案
python·aigc·音视频
chase。8 小时前
【学习笔记】Unified World Models:基于视频-动作耦合扩散的机器人预训练新范式
笔记·学习·音视频
VidDown9 小时前
VidDown 工具站:视频分辨率技术
javascript·网络·编辑器·音视频·视频编解码·视频