【问题标题】:Node fluent-ffmpeg stream output error code 1节点fluent-ffmpeg流输出错误码1
【发布时间】:2014-04-20 23:36:03
【问题描述】:

完全按照文档,我正在尝试使用流将视频转换写入文件。

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 位上使用来自 here 的 64 位 ffmpeg 构建。

【问题讨论】:

    标签: node.js stream ffmpeg


    【解决方案1】:

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

    就像当你流式传输时,你必须指定一种格式,但你不能指定 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');
    });
    

    【讨论】:

    【解决方案2】:

    我在 Debian 上遇到了同样的问题。问题是,只有带有 ffmpeg 回退的 avconv,但库 fluent-ffmpeg 称为 ffmpeg -encoders,它以“Missing argument for option '-encoders'”结尾. Avconv 只有 avconv -codecs

    所以安装正确的 ffmpeg 包应该会有所帮助。

    (或将flunt-ffmpeg库代码改为调用不是-encoders而是-codecs,输出格式略有不同)

    PS.:相同的脚本在 Windows 上做得很好

    【讨论】:

      【解决方案3】:

      尝试在您的机器上更新 ffmpeg。我有 2.8,我得到了同样的错误。更新到3.0后就可以正常使用了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-09
        • 1970-01-01
        • 2018-01-22
        • 2017-04-29
        • 1970-01-01
        • 1970-01-01
        • 2016-12-21
        • 1970-01-01
        相关资源
        最近更新 更多