【问题标题】:How to generate tile with video thumbnails with right timecode如何使用正确的时间码生成带有视频缩略图的图块
【发布时间】:2022-05-20 20:23:24
【问题描述】:

我使用 FFMPEG 库每 5 秒使用以下命令生成带有时间码的视频缩略图:

 ffmpeg \
-i 20051210-w50s.flv \
-y \
-frames 1 \
-vf " \
    select=not(mod(t\,5)), \
    scale=320:-1, \
    drawtext=fontfile=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf: \
    timecode='00\\:00\\:00\\:00': r=25: fontcolor=white: x=220: y=220: box=1: boxcolor=black@0.5, \
    tile=5x2" \
-vsync 0 \
out.jpg

它生成正确的缩略图平铺,但时间码是错误的。如何解决这个问题?

【问题讨论】:

    标签: ffmpeg video-thumbnails


    【解决方案1】:

    drawtext 过滤器没有引用时间戳。它使用一个简单的计数器来增加每个新帧的时间码。所以,这样做的方法是绘制每个时间码,然后丢帧。

    ffmpeg \
    -i 20051210-w50s.flv \
    -y \
    -frames 1 \
    -vf " \        
        scale=320:-1, \
        drawtext=fontfile=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf: \
        timecode='00\\:00\\:00\\:00': r=25: fontcolor=white: x=220: y=220: box=1: boxcolor=black@0.5, \
        select=not(mod(t\,5)), \
        tile=5x2" \
    -vsync 0 \
    out.jpg
    

    【讨论】:

      【解决方案2】:

      在选择有用的帧之前为每个帧绘制文本可以解决问题,但也会带来性能损失。我做了一个实验,结果证实了我的猜测。

      更好的解决方案是先调用“select”并使用 text='%{pts:hms}' 而不是时间码。

      ffmpeg \
      -i 20051210-w50s.flv \
      -y \
      -frames 1 \
      -vf \
          "select=not(mod(t\,5)), \
          scale=320:-1, \
          drawtext=text='%{pts:hms}': fontfile=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf: \
          fontcolor=white: x=220: y=220: box=1: boxcolor=black@0.5, \
          tile=5x2" \
      -vsync 0 \
      out.jpg
      

      【讨论】:

        猜你喜欢
        • 2012-09-01
        • 1970-01-01
        • 2011-07-04
        • 2011-02-19
        • 1970-01-01
        • 2013-05-02
        • 1970-01-01
        • 2013-10-22
        • 2017-10-14
        相关资源
        最近更新 更多