节点fluent-ffmpegstream输出错误代码1

完全按照文档,我试图使用一个stream来写入video转换文件。

var FFmpeg = require('fluent-ffmpeg'); var fs = require('fs'); var outStream = fs.createWriteStream('C:/Users/Jack/Videos/test.mp4'); new FFmpeg({ source: 'C:/Users/Jack/Videos/video.mp4' }) .withVideoCodec('libx264') .withAudioCodec('libmp3lame') .withSize('320x240') .on('error', function(err) { console.log('An error occurred: ' + err.message); }) .on('end', function() { console.log('Processing finished !'); }) .writeToStream(outStream, { end: true }); 

当我使用.saveToFile()时,这个转换完美地工作,但返回

发生错误:ffmpeg用代码1退出

当我运行这个代码。 我在Windows 8.1 64位使用从这里 64位ffmpeg生成。

今天我也有同样的问题(也在同一个平台上)

这就像你什么时候你必须指定一个格式,但你不能指定mp4,因为它是无效的

我结束了这个,我认为这是一个很好的解决方法,我希望它可以帮助:

 var input_file = fs.createReadStream(path); input_file.on('error', function(err) { console.log(err); }); var output_path = 'tmp/output.mp4'; var output_stream = fs.createWriteStream('tmp/output.mp4'); var ffmpeg = child_process.spawn('ffmpeg', ['-i', 'pipe:0', '-f', 'mp4', '-movflags', 'frag_keyframe', 'pipe:1']); input_file.pipe(ffmpeg.stdin); ffmpeg.stdout.pipe(output_stream); ffmpeg.stderr.on('data', function (data) { console.log(data.toString()); }); ffmpeg.stderr.on('end', function () { console.log('file has been converted succesfully'); }); ffmpeg.stderr.on('exit', function () { console.log('child process exited'); }); ffmpeg.stderr.on('close', function() { console.log('...closing time! bye'); }); 

我在Debian上也有同样的问题。 问题是,只有avconv ffmpeg后备,但库fluent-ffmpeg调用ffmpeg -encoders ,结束于“ 缺less选项'编码器'的参数 ”。 Avconv只有avconv编解码器

所以安装适当的ffmpeg包应该有所帮助。

(或者更改flunt-ffmpeg库的代码来调用不是编码器,而是编码器,输出格式略有不同)

PS:同样的脚本在窗户上做得很好

尝试在您的机器上更新ffmpeg。 我有2.8和我有同样的错误。 它更新到3.0后正常工作。