返回
nodejs环境下如何获取MP4视频时长(二)
后端
2023-12-16 15:56:40
本文将讨论以下内容:
- 使用流媒体工具ffmpeg或ffprobe获取MP4时长
- 使用Node.js的buffer模块快速解析出MP4时长等信息
使用流媒体工具ffmpeg或ffprobe获取MP4时长
const {spawn} = require('child_process');
const ffmpeg = spawn('ffmpeg', ['-i', 'input.mp4']);
ffmpeg.stderr.on('data', (data) => {
// Parse the output of ffmpeg to get the duration of the video
const duration = data.toString().match(/Duration: (\d+):(\d+):(\d+)\./);
console.log(`Duration: ${duration[1]}:${duration[2]}:${duration[3]}`);
});
使用Node.js的buffer模块快速解析出MP4时长等信息
const fs = require('fs');
const buffer = fs.readFileSync('input.mp4');
// Check for the ftyp atom
if (buffer.slice(4, 8).toString() !== 'ftyp') {
throw new Error('Invalid MP4 file');
}
// Get the size of the moov atom
const moovAtomSize = buffer.readUInt32BE(16);
// Get the offset of the moov atom
const moovAtomOffset = buffer.readUInt32BE(20);
// Get the moov atom
const moovAtom = buffer.slice(moovAtomOffset, moovAtomOffset + moovAtomSize);
// Check for the mvhd atom
if (moovAtom.slice(4, 8).toString() !== 'mvhd') {
throw new Error('Invalid MP4 file');
}
// Get the duration of the video
const duration = moovAtom.readUInt32BE(20);
// Convert the duration from seconds to milliseconds
const durationMs = duration * 1000;
console.log(`Duration: ${durationMs} milliseconds`);
结语
在本文中,我们讨论了如何在nodejs环境下获取MP4视频时长。我们介绍了使用流媒体工具ffmpeg或ffprobe获取MP4时长的方法,以及使用Node.js的buffer模块快速解析出MP4时长等信息的方法。我希望本文对您有所帮助。