使用ffmpeg在每个帧中显示特定字符串

使用ffmpeg在每个帧中显示特定字符串,ffmpeg,Ffmpeg,我正在从一组像这样的图像中创建一个视频 ffmpeg -f concat -safe 0 -r 1 -i video_file.txt -crf 0 video_file.mkv 其中video_file.txt包含图像的文件路径,如下所示: file '/path/to/image1.tif' duration 0.5 file_packet_metadata name=image1_name file '/path/to/image2.tif'

我正在从一组像这样的图像中创建一个视频

    ffmpeg -f concat -safe 0 -r 1 -i video_file.txt -crf 0 video_file.mkv
其中video_file.txt包含图像的文件路径,如下所示:

    file '/path/to/image1.tif'
    duration 0.5
    file_packet_metadata name=image1_name
    file '/path/to/image2.tif'
    duration 0.5
    file_packet_metadata name=image2_name
    ...
Concat读取以文件“…”开头的所有行,并正确创建输出视频

我希望在屏幕上显示每个帧的特定字符串,例如文件名或其一部分

我尝试了不同的选择,但都没有成功:

  • -vf drawtext=textfile='path/to/frame.txt
    添加到ffmpeg命令
    • 其中frame.txt在每一行中包含我想要的每一帧的文本
    • 此操作失败,因为文件中的整个文本显示在每个帧上
  • 添加
    -vf drawtext=text=%{metadata\\\:name}
    以读取video_file.txt中的元数据名称=image1_名称
    • 这只是在输出中显示字符串“name}”
    • 我尝试了{metadata\:name}、{metadata:name}和{metadata:name}

  • 如何为每个帧显示特定的字符串?

    这只是转义的问题,前提是您的ffmpeg足够新。再见,谢谢你,吉安。这确实是我找到我发布的第二个解决方案的来源。但出于某种原因,它对我不起作用。我尝试了{metadata\\\:name}、{metadata\:name}和{metadata:name}。我更新了我的帖子。我已经用ffmpeg版本4.1.3Ok解决了这个问题。这确实是一个“逃跑问题”。因为我使用python连接字符串,所以需要在创建命令字符串时转义“when-creating-command-string.right命令必须是-vf”drawtext=text='{metadata \:name}'”,并使用正确的单引号和双引号,如中所示