如何将音频和视频.webm文件合并到nodeJS中的一个文件中?

时间:2020-10-09 12:36:26

标签: node.js ffmpeg video-processing webm

我有两个文件(音频和视频)已在录制后输出。我试图将它们合并到节点JS中,但没有成功。

有人可以指导我,我如何合并音频和视频.webm文件。

下面是我正在尝试的示例代码。

var util = require("util");
var child_process = require("child_process");
var exec = child_process.exec;

const audioFile =
  "./RMa56600d802119433a6fcd59b5404ff49_works/MT56a3ad9dfad21408331fb93b2205061d/1.webm";
const videoFile =
  "./RMa56600d802119433a6fcd59b5404ff49_works/MTf4a4283fa27c7f6193749f39462fdeec/1.webm";
const outputFileName = "./RMa56600d802119433a6fcd59b5404ff49_works/merged.webm";

function puts(error, stdout, stderr) {
  console.log("Puts func called");
  stdout ? util.print("stdout: " + stdout) : null;
  stderr ? util.print("stderr: " + stderr) : null;
  error ? console.log("exec error: " + error) : null;
}


exec("ffmpeg -i videoFile -i audioFile -map 0:0 -map 1:0 outputFileName", puts);

下面是我得到的错误。

app.js:237未捕获的TypeError:exec不是函数

1 个答案:

答案 0 :(得分:0)

就其价值而言,我目前在我的一个项目中使用 webm/opus 和 mp4/mp4a 文件成功地做到了这一点。为了达到预期的结果,我使用的 ffmpeg 命令如下所示:

ffmpeg -i vfn -i afn -vcodec copy -acodec copy ofn

但我使用:

const spawn = require('child_process').spawnSync;

const output = spawn('ffmpeg',['-i',vfn,'-i',afn,'-vcodec','copy','-acodec','copy',ofn]);

其中 vfn、afn 和 ofn 是视频、音频和输出文件名。我在分叉进程中使用它,因此同步阻塞不是问题。无论如何,ffmpeg 复制操作非常快。

相关问题