【问题标题】:I want to use showwavespic to generate waveform data我想使用 showwavespic 生成波形数据
【发布时间】:2018-01-21 19:27:47
【问题描述】:

为了我的一生,我无法翻译:

-i foo.mp3 -filter_complex aformat=channel_layouts=mono,showwavespic=s=4000x1000 -frames:v 1 foo.png

进入 fluent-ffmpeg 命令。谁能帮帮我?

我已经尝试过最基本的命令:

var inputStream = fs.createReadStream('C:/Somewhere/foo.mp3')
var outputStream = fs.createWriteStream('C:/Somehere/foo.png')

var proc = ffmpeg()
     .input(inputStream)
     .complexFilter([
         'showwavespic'
     ])
     .on('error', function(err) {
          console.log('an error happened: ' + err.message);
     })
     .save(outputStream);

我收到处理程序抛出的错误:an error happened: ffmpeg exited with code 1: Cannot find a matching stream for unlabeled input pad 0 on filter Parsed_showwavespic_1

【问题讨论】:

    标签: fluent-ffmpeg


    【解决方案1】:

    您需要为complexFilter 指定一个用于生成波形的输入,还需要设置一个我命名为waveform 的输出。

    这就是我的做法:(fluent-ffmpeg v2.1.2)

    import FFMPEG from 'fluent-ffmpeg';
    
    const ffmpeg = new FFMPEG({
        source: 'path/to/input_file.mp3'
    });
    
    ffmpeg
        .complexFilter(
            [
                `[0:a]aformat=channel_layouts=mono,compand=gain=-6,showwavespic=s=4000x1000:colors=#0025ff[waveform]`
            ],
            ['waveform']
        )
        .outputOptions(['-vframes 1'])
        .on('start', () => {
            console.log('FFMPEG started with command:', command);
        })
        .on('progress', () => {
            console.log('progress:', progress);
        })
        .on('error', error => {
            console.log('FFMPEG error:', error);
            reject(error.message);
        })
        .on('end', () => {
            console.log('FFMPEG is done!');
        })
        .saveToFile('path/to/output.png');
    

    【讨论】:

      【解决方案2】:

      因为错误告诉您需要为 showwavespic 过滤器输入。

      简单示例的示例:

      var inputStream = fs.createReadStream('C:/Somewhere/foo.mp3')
      var outputStream = fs.createWriteStream('C:/Somehere/foo.png')
      
      var proc = ffmpeg()
           .input(inputStream)
           .complexFilter([
               '[0:a]aformat=channel_layouts=mono,showwavespic=s=4000x1000'
           ])
           .outputOptions(['-vframes 1'])
           .on('error', function(err) {
                console.log('an error happened: ' + err.message);
           })
           .save(outputStream);
      

      【讨论】:

        猜你喜欢
        • 2015-11-22
        • 2014-11-08
        • 1970-01-01
        • 1970-01-01
        • 2010-11-08
        • 2012-10-23
        • 1970-01-01
        • 2017-07-08
        • 2011-11-16
        相关资源
        最近更新 更多