首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何同步执行ffmpeg命令?

如何同步执行ffmpeg命令?
EN

Stack Overflow用户
提问于 2021-06-23 14:29:05
回答 1查看 559关注 0票数 1

我有一个视频处理API,我想同步运行ffmpeg命令,否则处理过的文件就会损坏。

到目前为止,我尝试了以下步骤:

代码语言:javascript
复制
var execute = (command) => {
  const ffmpeg = spawn("./bin/ffmpeg/ffmpeg", command);
  ffmpeg.stderr.on("data", (data) => {
    debug(data.toString());
  });

  ffmpeg.on("close", () => {
    console.log('DONE');
  });
};

var sourceFilePath = '/tmp/test.mp4';
var outputPath = '/tmp/test_processed.mp4';
var ss = 5;
var t = 10;

execute([
  "-i",
  sourceFilePath,
  "-ss",
  ss,
  "-t",
  t,
  outputPath,
]);

await uploadTos3(outputPath); // Helper function to upload processed file to s3

上传的文件不起作用。它被腐蚀了。

注:当我试图上传一个工作视频,它是有效的。所以问题在于ffmpeg助手函数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-23 14:38:10

我认为您应该将您的execute函数转换为:

代码语言:javascript
复制
exports.execute = async (command) => {

  return new Promise((resolve, reject) => {
    const ffmpeg = spawn("./bin/ffmpeg/ffmpeg", command);
    ffmpeg.once('error',reject);
    ffmpeg.stderr.on("data", (data) => {
      debug(data.toString(); //I'm not sure what debug is
    });

    ffmpeg.on("exit", (code,signal) => {
      if(signal)
        code = signal;
      if(code != 0) {
        reject(new Error(`Returned exit code ${code}`);
        console.log('Error');
      }
      else {
        resolve(); // Call resolve here
        console.log('DONE');
      }
    });
  });
};
await execute([  // Call function with `await`
  "-i",
  sourceFilePath,
  "-ss",
  ss,
  "-t",
  t,
  outputPath,
]);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68101810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档