我正在尝试将
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
在
.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();
它不能与
createWriteStream
一起使用,因为 Fluent-ffmpeg 正在将所有内容“转换”为 ffmpeg 语法。此语法要求输出为字符串