首页 > 解决方案 > FFMPEG 将多个音频输入文件映射到 1 个单个图像文件,以便创建多个视频输出文件

问题描述

我正在尝试将 ffmpeg 中的多个输出文件映射到多个输入,但是我将第一个输入映射到第一个视频而不是每个输入映射到一个唯一的输出,然后根本不会创建下一个视频,我将准确描述什么我正在努力实现以下目标,

我需要:

  1. 创建多个视频输出文件
  2. 从多个音频输入文件
  3. 它们都使用相同的一个通用图像文件来创建视频

我将在下面发布我的命令,任何帮助将不胜感激谢谢

-y -i input1.mp3 -i input2.mp3 -f image2 -loop 1 -r 2 -i imagefile.png -shortest -c:a aac -c:v mpeg4 -crf 18 -preset veryfast -movflags faststart -map 0 output1.mp4 -map1 output2.mp4

标签: ffmpegcommandandroid-ffmpegffmpeg-php

解决方案


基本命令

ffmpeg -i input1.mp3 -i input2.mp3 -loop 1 -framerate 10 -i imagefile.png -map 2:v -map 0:a -vf format=yuv420p -shortest output1.mp4 -map 2:v -map 1:a -vf format=yuv420p -shortest output2.mp4

每个输出对视频进行一次过滤和编码。

使用分体式过滤器

ffmpeg -i input1.mp3 -i input2.mp3 -loop 1 -framerate 10 -i imagefile.png -filter_complex "[2:v]format=yuv420p,split=outputs=2[v0][v1]" -map "[v0] -map 0:a -shortest -movflags +faststart output1.mp4 -map "[v1]" -map 1:a -shortest -movflags +faststart output2.mp4

视频总共过滤一次,并为每个输出单独编码。

管道

ffmpeg -y -v error -loop 1 -framerate 10 -i imagefile.png -filter_complex "[0:v]format=yuv420p[v]" -map "[v]" -c:v libx264 -f nut - | ffmpeg -y -i - -i input1.mp3 -i input2.mp3 -map 0:v -map 1:a -c:v copy -shortest -movflags +faststart output1.mp4 -map 0:v -map 2:a -c:v copy -shortest -movflags +faststart output2.mp4

视频只被过滤和编码一次,每个输出流都会复制它。


推荐阅读