首页 > 解决方案 > 如何使用 FFmpeg.wasm 验证视频文件

问题描述

我想验证用户上传的文件。所以我可以知道它是否是有效的 mp4 或任何音频类型。我正在尝试做类似的事情。

ffmpeg -v error -i file.mp4 -f null - > error.log

当我跑步时

await ffmpeg.run(`-v error -sseof -60  -i ${file.name} -f null - > result.text`);

它显示错误
[fferr] Unrecognized option 'v error -sseof -60 -i vidoe.mp4 -f null - > result.txt'.

什么是正确的方法?

标签: javascriptffmpegwebassembly

解决方案


最后,我找到了解决方案。

初始化时createFFmpeg,有一个属性logger需要回调函数来获取日志消息。

  • 创建事件目标以获取日志
const logger = new EventTarget(); 
  • 在里面createFFmpeg
const ffmpeg = createFFmpeg({
    log: true,
    logger: (l) => {
        logger.dispatchEvent(new CustomEvent("log", { detail: l }));
    },
});
  • 加载ffmpeg
await ffmpeg.load();
  • 听日志
let logs = [];
let log_func = (e)=>{
    logs.push({ type: e.detail.type, msg: e.detail.message });
};
logger.addEventListener("log", log_func);
  • 运行ffmpeg
ffmpeg.FS("writeFile", file.name, await fetchFile(file));
await ffmpeg.run("-v","error","-sseof","-60","-i",file.name,"-f","null","-");
  • 日志
console.log(logs);
  • 移除事件监听器
logger.removeEventListener("log", log_func);

所有日志都存储在logs数组中


推荐阅读