arrays - 在 pngs 上循环运行 ffmpeg 以提高效率?

标签 arrays list loops ffmpeg

我正在使用 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
    
  • 编码,使用 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 .
  • 关于arrays - 在 pngs 上循环运行 ffmpeg 以提高效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67812198/

    相关文章:

    arrays - 数组列表的实现

    c - 使用指针更改函数中数组值的问题

    PHP - 数组映射或过滤

    java - Java 中的数组索引异常

    python - 如何在字典中找到相同的值

    c# - 将属性添加到列表?

    c - realloc 后奇怪的字符

    javascript - 如何在原型(prototype)中运行数组中的函数对象

    php - 在php中组合两个或多个不同格式的数组

    c++ - 对持有 unique_ptr vector 的对象列表进行排序