是否可以在连续图像幻灯片的角落刻录文件名水印并使其随着每张图像而改变?

是否可以在连续图像幻灯片的角落刻录文件名水印并使其随着每张图像而改变?

我想做的事:我有一个文件夹,里面有很多图片。我想用这些文件制作幻灯片视频,同时想将每张原始图片的文件名刻录到右下角。

我目前的状态:我编写了一个脚本来获取.jpg文件夹中的所有文件并制作一个ffmpeg-readable列表,我知道如何将图像连接到幻灯片中,一切都按预期进行。我还弄清楚了如何使用 FFmpeg 的 drawtext 来获得漂亮的文件名标记。

现在的问题是:目前,FFmpeg 从文件列表中抓取最后一个文件名(例如 IMG_9935.jpg)并将其刻录到整个视频中。但我希望它随着每个“新”图像而改变 - 就像时间码在视频过程中会改变一样。

这一切可能吗?

附注::“你为什么不预先刻录文件名?”我想让它尽可能灵活。所以如果有其他方法,我想这样做。

for i in *.jpg; do echo "file '$i'" >> files.txt; done

ffmpeg -r 1/3 -f concat -safe 0 -i files.txt -vf
"eq=text=$(echo $i | rev | cut -d / -f 1 | rev): fontcolor=0x808080:
fontsize=14: x=w-tw- 10:y=h-th-10" -c libx264 filename.mp4

答案1

concat 解复用器允许设置每个文件的元数据条目,但这必须手动完成。

您可以将脚本更改为

for i in *.jpg; do echo "file '$i'" >> files.txt; echo "file_packet_metadata url=$i" >> files.txt; done

ffmpeg -r 1/3 -f concat -safe 0 -i files.txt -vf
"drawtext=text='%{metadata\:url}': fontcolor=0x808080:
fontsize=14: x=w-tw- 10:y=h-th-10" -r 12 -c:v libx264 filename.mp4

相关内容