node.js fluence-ffmepg 与 createWriteStream 失败

问题描述 投票:0回答:2

我正在尝试将

fluent-ffmpeg
节点包与
createReadStream
createWriteStream
一起使用。

但是,如果我替换这一行:

  .output(fs.createWriteStream('assets/transcode-video.mp4'), {end: true})

我写这个

  .output('assets/transcode-video.mp4', {end: true})

它有效。但我确实遵循了文档。我感谢任何帮助或提示。

const fs = require('fs');
const ffmpeg = require("fluent-ffmpeg");
const logger = console;

const options = {
  timeout: 60, // seconds
  logger
};

ffmpeg(fs.createReadStream('assets/video.webm'), options)
  .output(fs.createWriteStream('assets/transcode-video.mp4'), {end: true})
  .on('end', () => console.log('Finished processing'))
  .run();

错误:

> node src/index.js

events.js:292
      throw er; // Unhandled 'error' event
      ^

Error: ffmpeg exited with code 1: pipe:1: Invalid argument

我的完整代码存储库

ffmpeg fluent-ffmpeg
2个回答
0
投票

.output(fs.createWriteStream('assets/transcode-video.mp4'), {end: true})
中删除
fs.write()
,因为这是不必要的,ffmpeg将创建输出文件,而不需要您手动执行。

您的代码将如下所示:

const fs = require ('fs');
const ffmpeg = require ("fluent-ffmpeg");
const logger = console;

const options = {
  timeout: 60, // seconds
  logger
};

ffmpeg (fs.createReadStream ('out.mp3'), options)
  .output ('transcode-video.mp4', {end: true})
  .on ('start', (a) => console.log (a))
  .on ('end', () => console.log ('Processing completed'))
  .run();

0
投票

它不能与

createWriteStream
一起使用,因为 Fluent-ffmpeg 正在将所有内容“转换”为 ffmpeg 语法。此语法要求输出为字符串

© www.soinside.com 2019 - 2024. All rights reserved.