javascript - 如何使用 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'.
什么是正确的方法?
解决方案
最后,我找到了解决方案。
初始化时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
数组中
推荐阅读
- pyspark - 由于端口问题,pyspark 代码失败
- rust - 在使用 tinyvec 时,即使 ArrayVec 和 Item impl Copy,我也会得到“字段未实现`Copy`”
- r - Igraph:仅获取更改的自我网络密度
- java - 如何禁用 Intellij 服务工具窗口
- g++ - 我不断收到“'g++' 未被识别为内部或外部命令、可运行程序或批处理文件。” 输入 g++ --version 后出错
- css - 全高顺风
部分 - php - 卷曲到 GuzzleHttp
- python - 使用 Dropbox API 将 PNG 从 python 保存到 Dropbox
- node.js - 使用 Npm 将 framework7 安装到科尔多瓦时出错
- javascript - 使用 Navlink Router 和 Switch Route 链接网站