我有一个有效的 ffmpeg 命令,它需要 4 个输入文件 https://file.io/DllNlkCqX6J6
(2 个音频,2 个图像)然后使用 filter_complex 字符串渲染 .mkv 视频,该字符串告诉 ffmpeg 连接两个音频文件并为两个图像制作幻灯片。
filter_complex 字符串依赖于输入文件的顺序。
例如:filter_complex 中的
[0:a][1:a]concat=n=2:v=0:a=1[a]
告诉 ffmpeg 获取 index=0 输入音频文件和 index=1 输入音频文件,并连接它们。
然后,
[2:v]
部分告诉 ffmpeg 获取 index=2 图像文件(我们从零开始计算索引,因此 index=2 实际上是第三个文件,即“3.sidea.jpg”)
ffmpeg
-r 2 -i "C:\Users\martin\Documents\album\a1 - in the beginning.mp3"
-r 2 -i "C:\Users\martin\Documents\album\a2 - stratovarious.mp3"
-r 2 -i "C:\Users\martin\Documents\album\3 sidea.jpg"
-r 2 -i "C:\Users\martin\Documents\album\4 sideb.jpg"
-filter_complex "[0:a][1:a]concat=n=2:v=0:a=1[a];[2:v]scale=w=1920:h=1920:force_original_aspect_ratio=decrease,pad=1920:1920:-1:-1:color=white,setsar=1,loop=309.95:309.95[v2];[3:v]scale=w=1920:h=1920:force_original_aspect_ratio=decrease,pad=1920:1920:-1:-1:color=white,setsar=1,loop=309.95:309.95[v3];[v2][v3]concat=n=2:v=1:a=0,pad=ceil(iw/2)*2:ceil(ih/2)*2[v]"
-map [v] -map [a] -c:a pcm_s32le -c:v libx264 -bufsize 3M -crf 18 -pix_fmt yuv420p -tune stillimage -t 309.95
"C:\Users\martin\Documents\album\working.mkv"
此命令有效,但我对 2k+ 音频输入文件使用相同的格式,我达到了终端命令行字符限制。所以我试图将我的输入文件移动到文本文件
input_files.txt
:
file 'C:\Users\martin\Documents\album\a1 - in the beginning.mp3'
file 'C:\Users\martin\Documents\album\a2 - stratovarious.mp3'
file 'C:\Users\martin\Documents\album\3 sidea.jpg'
file 'C:\Users\martin\Documents\album\4 sideb.jpg'
相同的文件,以相同的顺序。但是使用这个 input_text.txt 文件运行我的新命令:
ffmpeg
-f concat -safe 0 -i input_files.txt
-filter_complex "[0:a][1:a]concat=n=2:v=0:a=1[a];[2:v]scale=w=1920:h=1920:force_original_aspect_ratio=decrease,pad=1920:1920:-1:-1:color=white,setsar=1,loop=309.95:309.95[v2];[3:v]scale=w=1920:h=1920:force_original_aspect_ratio=decrease,pad=1920:1920:-1:-1:color=white,setsar=1,loop=309.95:309.95[v3];[v2][v3]concat=n=2:v=1:a=0,pad=ceil(iw/2)*2:ceil(ih/2)*2[v]"
-map [v] -map [a] -c:a pcm_s32le -c:v libx264 -bufsize 3M -crf 18 -pix_fmt yuv420p -tune stillimage -t 309.95
"C:\Users\martin\Documents\album\working.mkv"
导致有关 filter_complex 索引号的错误:
[mp3 @ 0000025d87057700] Estimating duration from bitrate, this may be inaccurate
Input #0, concat, from 'input_files.txt':
Duration: N/A, start: 0.000000, bitrate: 320 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s
Invalid file index 1 in filtergraph description [0:a][1:a]concat=n=2:v=0:a=1[a];[2:v]scale=w=1920:h=1920:force_original_aspect_ratio=decrease,pad=1920:1920:-1:-1:color=white,setsar=1,loop=309.95:309.95[v2];[3:v]scale=w=1920:h=1920:force_original_aspect_ratio=decrease,pad=1920:1920:-1:-1:color=white,setsar=1,loop=309.95:309.95[v3];[v2][v3]concat=n=2:v=1:a=0,pad=ceil(iw/2)*2:ceil(ih/2)*2[v].
几乎就像是将
-i input_files.txt
视为它自己的 index=0 文件。我尝试了不同的修复方法,但没有成功。
如何将我的 filter_complex 字符串与文本文件一起用作我的 ffmpeg 命令文件输入的来源?