【nodejs】批量获取文件的时长
因为ffmpeg.ffprobe是异步的,需要使用promise同步,然后Promise.all将所有的Promise执行结果处理后返回
/** * 获取文件列表时长(同步获取返回) * @param {Object} fileList */ async getFileDuration(fileList) { // 初始化 let promises = fileList.map(file => { return new Promise((resolve, reject) => { ffmpeg.ffprobe(file, (err, data) => { if (err) { reject(`无法获取视频信息: ${err}`); } else { resolve(data.format.duration); } }); }); }); return Promise.all(promises) .then(res => { let durationList = []; fileList.forEach((file, index) => { durationList.push({name: file, time: Math.ceil(res[index])}); }); return durationList; }); }
调用获取结果
let duration = await Services.get('file').getFileDuration(fileList);
console.log(fileList, duration);
得意时做事,失意时读书
分类:
JS/CSS
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?