【问题标题】:Fluent FFMPEG complex filter to split file into multiple outputsFluent FFMPEG 复杂过滤器将文件拆分为多个输出
【发布时间】:2020-09-30 19:39:01
【问题描述】:

单个 FFMPEG 命令似乎有多个输出:ffmpeg overlay on multiple outputs

我想知道如何在 FFMPEG 中做到这一点。我专门使用 complexFilter 选项来尝试将视频拆分为 4 种不同的大小并放置一个叠加层,然后保存 4 个生成的文件。

代码是我尝试简单地将视频分成 4 份并保存。我收到Error: ffmpeg exited with code 1: Filter split:output3 has an unconnected output 错误。我不确定如何将输出连接到 fluent-ffmpeg 中的文件。

    let ffmpegCommand = ffmpeg() 
        .addInput(path.join(__dirname, PROCESSING_CACHE_DIRECTORY, "tempImage_%d.jpg"))

        .addOutput(outputPathFull)
        .addOutput(outputPathMed)
        .addOutput(outputPathSmall)
        .addOutput(outputPathThumb)


        .toFormat('mp4')
        .videoCodec('libx264')
        .outputOptions('-pix_fmt yuv420p')
        .complexFilter([
        {
                filter: 'split', options: '4',
                inputs: ['0:v'], outputs: [outputPathFull, outputPathMed, outputPathSmall, outputPathThumb]
            },
        ])

当我翻转输出并将它们放在 complexFilter 下方时,我得到了 4 个文件 - 一个具有适当的质量(比预期大 4 倍),其他的质量非常低。

【问题讨论】:

    标签: node.js ffmpeg fluent-ffmpeg


    【解决方案1】:

    ffmpeg 中执行此操作的正确方法是使用-map 为每个输出定义所需的过滤器,按照fluent-ffmpeg 的示例进行操作:

    let ffmpeg = require('fluent-ffmpeg')
    let fileName = 'video.mp4'
    let outputID1 = '1'
    let outputID2 = '2'
    let outputID3 = '3'
    let outputID4 = '4'
    let outputPathFull = 'out-1.mp4'
    let outputPathMed = 'out-2.mp4'
    let outputPathSmall = 'out-3.mp4'
    let outputPathThumb = 'out-4.mp4'
    
    ffmpeg() 
    .addInput(path.join(__dirname, PROCESSING_CACHE_DIRECTORY, fileName))
    .complexFilter([
    {
            filter: 'split', options: '4',
            inputs: ['0:v'], outputs: [outputID1, outputID2, outputID3, outputID4]
        },
    ])
    
    .output(outputPathFull)
    .map(outputID1)
    .toFormat('mp4')
    .addOutputOption('-c:v libx264')
    .addOutputOption('-pix_fmt yuv420p')
    
    .output(outputPathMed)
    .map(outputID2)
    .toFormat('mp4')
    .addOutputOption('-c:v libx264')
    .addOutputOption('-pix_fmt yuv420p')
    
    .output(outputPathSmall)
    .map(outputID3)
    .toFormat('mp4')
    .addOutputOption('-c:v libx264')
    .addOutputOption('-pix_fmt yuv420p')
    
    .output(outputPathThumb)
    .map(outputID4)
    .toFormat('mp4')
    .addOutputOption('-c:v libx264')
    .addOutputOption('-pix_fmt yuv420p')
    
    .run()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 2021-10-27
      • 1970-01-01
      相关资源
      最近更新 更多