【问题标题】:run ffmpeg in a loop on pngs for efficiency?在 pngs 上循环运行 ffmpeg 以提高效率?
【发布时间】:2021-08-21 00:43:38
【问题描述】:

我正在使用 ffmpeg 将生产数据作为文本覆盖嵌入到保存为 png 文件的单独动画帧中。

目前它的效率非常低,因为我需要从动画场景中采样值,例如当前帧和相机焦距,所以我有一个循环对每帧的信息进行采样,运行 ffmpeg 来嵌入该帧的文本, 然后关闭 ffmpeg 并重复直到完成。

如果我有两个给定的字符串列表数组(例如帧号和焦距),有没有办法让 ffmpeg 运行单个实例,但是对于给定列表中的每个 png,它还引用数组中的下一个项目打印文本并因此只对整个框架集进行一次操作?

【问题讨论】:

    标签: arrays list loops ffmpeg


    【解决方案1】:

    使用concat demuxer

    1. 制作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
      
    2. 编码,使用drawtext过滤器添加文本:

      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

    【讨论】:

    • 刚刚做了一个快速测试。文本是在 JPG 和 PAM 上绘制的,而不是 PNG。我没时间了,我以后得研究一下。在此之前,您可以将 PNG 转换为 PAM 或其他任何解决方法。
    • 谢谢 llogan,这是一个很好的入门指南。
    猜你喜欢
    • 2015-10-08
    • 1970-01-01
    • 2019-11-06
    • 2019-03-07
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    相关资源
    最近更新 更多