我有一个包含视频文件的文件夹,并且需要使用Linux上的bash脚本从每个文件中提取2个以上的帧。目前,我正在循环处理每个视频文件:
ffmpeg -nostdin -loglevel fatal -ss 15 -i "${filename}" -frames:v 1 "${out1}"
ffmpeg -nostdin -loglevel fatal -sseof -15 -i "${filename}" -frames:v 1 "${out2}"
这将提取帧15s并从末尾提取另一个帧15s。对于N个视频文件,我需要2N个ffmpeg调用。我按照here的要求进行了-vf select
的实验,但这要慢得多,尤其是要求从头到尾选择帧时。另外,我已经在使用GNU parallel,这有很大的不同。
性能实际上还不错。但是我的问题是,这可以进一步改善吗?我希望找到一种方法
答案 0 :(得分:2)
您可以多次提取同一输入,也可以在同一命令中提取多个输入。
基本命令结构是
ffmpeg -nostdin -loglevel fatal
-ss 15 -i "${filename}"
-sseof -15 -i "${filename}"
-ss 15 -i "${filename2}"
-sseof -15 -i "${filename2}"
-map 0:v:0 -frames:v 1 "${file1-head}"
-map 1:v:0 -frames:v 1 "${file1-tail}"
-map 2:v:0 -frames:v 1 "${file2-head}"
-map 3:v:0 -frames:v 1 "${file2-tail}"
...
我怀疑这会导致一小部分文件的大改进。