我正在使用 FFmpeg 读取一系列单个图像并将它们作为视频输出。
结果是每隔 1 分钟对网站的屏幕截图进行延时拍摄。
现在我想使用 drawtext 命令将每个图像的原始捕获时间刻录到生成的视频中。捕获时间在每个图像的文件名中可用。但是我没有找到一些选项让 drawtext 访问输入图像的文件名。
另一种方法是从 drawtext 中访问每个图像的创建日期(我也找不到办法做到这一点)。但我肯定更喜欢访问文件名,因为这会给我更多的选项来格式化文本。
有没有办法做到这一点?
如果任何提议的解决方案也适用于 Windows,那就太好了。
小智 5
看起来自上一个答案以来,ffmpeg 已经获得了使用 image2 解码器中的元数据自行执行此操作的能力:
ffmpeg \
-f image2 \
-pattern_type glob \
-export_path_metadata 1 \
-i '*' \
-vf "drawtext=text='%{metadata\:lavf.image2dec.source_basename\:NA}'" \
-y ../output.mkv
Run Code Online (Sandbox Code Playgroud)
文件名不需要任何扩展名,ffmpeg 无论如何都会检测图像格式。因此可以根据需要重命名文件。由于输入是“*”,因此输出将发送到父目录,以防止混淆。
旧版本的 ffmpeg 无法在一行中完成此操作,因为ffmpeg
的 drawtext 过滤器不是那么先进。
您需要使用一些脚本提前预处理图像。
就像一个简单的 bash 脚本:
for i in *.png; do
time=$(echo $i | cut -d . -f 1)
ffmpeg -i $i -vf "drawtext=text=$time" mod-$time.png
done
Run Code Online (Sandbox Code Playgroud)
然后您可以使用 mod*.png 文件来创建视频。
归档时间: |
|
查看次数: |
4602 次 |
最近记录: |