【问题标题】:fluent-ffmpeg get codec data without specifying outputfluent-ffmpeg 获取编解码器数据而不指定输出
【发布时间】:2018-02-13 21:37:41
【问题描述】:

我正在使用 fluent-ffmpeg 节点模块从文件中获取编解码器数据。 如果我提供输出,它会起作用,但我想知道是否有任何选项可以运行 fluent-ffmpeg 而不给它输出。 这就是我正在做的:

readStream.end(new Buffer(file.buffer));
var process = new ffmpeg(readStream);

process.on('start', function() {
  console.log('Spawned ffmpeg');
}).on('codecData', function(data) {
  //get recording duration
  const duration = data.duration;
  console.log(duration)
}).save('temp.flac');

如您所见,我将文件保存到 temp.flac,以便获取该文件的秒数。

【问题讨论】:

    标签: node.js ffmpeg fluent-ffmpeg


    【解决方案1】:

    如果您不想将ffmpeg 处理结果保存到文件中,可以想到的一件事是将命令输出重定向到/dev/null

    其实正如fluent-ffmpeg 仓库的所有者在一个comment 中所说,使用null 格式时不需要为目的地指定真实的文件名。

    因此,例如,类似的事情会起作用:

    let process = new ffmpeg(readStream);
    
    process
      .addOption('-f', 'null')  // set format to null 
      .on('start', function() {
        console.log('Spawned ffmpeg');
      })
      .on('codecData', function(data) {
        //get recording duration
        let duration = data.duration;
        console.log(duration)
      })
      .output('nowhere')  // or '/dev/null' or something else
      .run()
    

    它仍然有点hacky,但我们必须设置一个输出以避免“未指定输出”错误。

    【讨论】:

      【解决方案2】:

      当不存在流参数时,pipe() 方法返回一个 PassThrough 流,您可以将其通过管道传输到其他地方(或者只是监听事件)。

      var command = ffmpeg('/path/to/file.avi')
        .videoCodec('libx264')
        .audioCodec('libmp3lame')
        .size('320x240')
        .on('error', function(err) {
          console.log('An error occurred: ' + err.message);
        })
        .on('end', function() {
          console.log('Processing finished !');
        });
      
      var ffstream = command.pipe();
      ffstream.on('data', function(chunk) {
        console.log('ffmpeg just wrote ' + chunk.length + ' bytes');
      });
      

      【讨论】:

        猜你喜欢
        • 2014-03-16
        • 1970-01-01
        • 1970-01-01
        • 2020-12-05
        • 2018-04-04
        • 1970-01-01
        • 2011-04-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多