使用@ffmpeg/ffmpeg这个库即可https://www.npmjs.com/package/@ffmpeg/ffmpeghttps://github.com/ffmpegwasm/ffmpeg.wasmimport { createFFmpeg, fetchFile } from '@ffmpeg/ffmpeg'; const ffmpeg = createFFmpeg({ log: true }); async function compressVideo(inputFile, outputQuality = 23) { if (!ffmpeg.isLoaded()) { await ffmpeg.load(); } // 将输入视频写入 ffmpeg 内部文件系统 ffmpeg.FS('writeFile', 'input.mp4', await fetchFile(inputFile)); // 使用 h264 编码压缩视频 await ffmpeg.run( '-i', 'input.mp4', '-vcodec', 'libx264', '-crf', outputQuality.toString(), // 控制视频质量(0-51,默认23,数值越大压缩率越高) '-preset', 'fast', 'output.mp4' ); // 读取输出文件 const data = ffmpeg.FS('readFile', 'output.mp4'); const compressedVideo = new Blob([data.buffer], { type: 'video/mp4' }); return URL.createObjectURL(compressedVideo); } export default compressVideo;
使用
@ffmpeg/ffmpeg
这个库即可https://www.npmjs.com/package/@ffmpeg/ffmpeg
https://github.com/ffmpegwasm/ffmpeg.wasm