【问题标题】:Frame Number Overlay With FFmpeg [closed]FFmpeg的帧号覆盖[关闭]
【发布时间】:2013-02-28 04:19:59
【问题描述】:

我需要使用 ffmpeg for windows 将帧号覆盖到视频文件的每一帧。

我使用此代码成功地用drawtext 过滤器覆盖了一个时间码戳:

ffmpeg -i video.mov -vcodec r210 -vf "drawtext=fontfile=Arial.ttf: timecode='01\:00\:00\:00': r=25: x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000099" -y output.mov

但是,我需要一个帧号覆盖而不是时间码。任何帮助将不胜感激。

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    您可以将drawtext filternframe_num 函数一起使用:


    循环 5 fps 示例

    示例命令:

    ffmpeg -i input -vf "drawtext=fontfile=Arial.ttf: text='%{frame_num}': start_number=1: x=(w-tw)/2: y=h-(2*lh): fontcolor=black: fontsize=20: box=1: boxcolor=white: boxborderw=5" -c:a copy output
    
    • 您可能需要提供字体文件的完整路径,例如fontfile=/usr/share/fonts/TTF/Vera.ttf
    • n/frame_num 从 0 开始,但您可以使用 start_number 选项使帧计数从 1 开始,如示例所示。

    如果需要,您可以添加其他文本,但请注意您必须转义一些特殊字符:

    text='Frame\: %{frame_num}'
    

    请参阅drawtext filter documentation 了解更多信息。

    【讨论】:

    • 有效!有什么办法让它从 1 开始计数?
    • 可能有一个“eval”选项,您可以将其添加到其中...
    • 添加 fontsize=200: 以实际看到一些东西 ;)
    • 我必须明确给出我的 ttf 文件的整个路径,即 /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf
    • @Zak44 尝试将format=yuv420p 附加到过滤器链(用逗号连接过滤器)。但这只是猜测,没有看到命令和日志。
    猜你喜欢
    • 1970-01-01
    • 2016-08-30
    • 2020-08-26
    • 2020-03-09
    • 2011-12-23
    • 2017-03-26
    • 2017-12-28
    • 2016-05-23
    • 2017-10-21
    相关资源
    最近更新 更多