我正在使用 ffmpeg 将生产数据作为文本覆盖嵌入到保存为 png 文件的单独动画帧中。
目前它的效率非常低,因为我需要从动画场景中采样值,例如当前帧和相机焦距,所以我有一个循环对每帧的信息进行采样,运行 ffmpeg 嵌入该帧的文本,然后关闭ffmpeg 并重复直到完成。
如果我有两个给定的字符串列表数组(例如帧号和焦距),有没有办法让 ffmpeg 运行一个实例,但是对于给定列表中的每个 png,它还引用数组中的下一个项目来打印文本,因此只操作一次整个框架集?
最佳答案
使用 concat demuxer .
input.txt
:file '01.png'
file_packet_metadata length=50mm
duration 0.04
file '02.png'
file_packet_metadata length=35mm
duration 0.04
file '03.png'
file_packet_metadata length=18mm
duration 0.04
ffmpeg -f concat -i input.txt -vf "drawtext=text='%{metadata\:length}':fontsize=22:fontcolor=white:x=w-tw-10:y=h-th-10,format=yuv420p" output.mp4
定位见How to position drawtext text .关于arrays - 在 pngs 上循环运行 ffmpeg 以提高效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67812198/