Video 使用FFmpeg创建缩略图

Video 使用FFmpeg创建缩略图,video,ffmpeg,thumbnails,Video,Ffmpeg,Thumbnails,我使用FFmpeg从视频文件的特定位置提取缩略图 我在网上找到了两种方法: 在-i(输入)参数之前使用-ss(seek)参数: ffmpeg-y-ss$SEEK_POINT-i input.ogv-vcodec mjpeg-vframes 1-an-s 120x90-f rawvideo output.jpg 在-i(输入)参数之后使用-ss(seek)参数: ffmpeg-y-i input.ogv-vcodec mjpeg-ss$SEEK_POINT-vframes 1-an-s 120x9

我使用FFmpeg从视频文件的特定位置提取缩略图

我在网上找到了两种方法:

  • -i
    (输入)参数之前使用
    -ss
    (seek)参数:

    ffmpeg-y-ss$SEEK_POINT-i input.ogv-vcodec mjpeg-vframes 1-an-s 120x90-f rawvideo output.jpg

  • -i
    (输入)参数之后使用
    -ss
    (seek)参数:

    ffmpeg-y-i input.ogv-vcodec mjpeg-ss$SEEK_POINT-vframes 1-an-s 120x90-f rawvideo output.jpg

  • 第一种方法生成带有灰色斑点的坏缩略图,但效果非常快。返回的错误是
    [theora@0x8097240]vp3:第一帧不是关键帧

    第二种方法始终有效,但显示错误,导致提取需要花费大量时间。这个时间量不是固定的,它取决于我注意到的搜索点。有时提取缩略图需要几秒钟,有时需要几分钟。我得到错误
    缓冲几个帧不受支持。请在添加新帧之前使用所有可用帧。
    在以下输出中:

    Input #0, ogg, from 'input.ogv':
      Duration: 00:21:52.76, start: 0.000000, bitrate: 844 kb/s
        Stream #0.0: Video: theora, yuv420p, 800x600 [PAR 4:3 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
        Stream #0.1: Audio: vorbis, 44100 Hz, stereo, s16, 192 kb/s
        Metadata:
          ENCODER         : Lavf52.102.0
    Incompatible pixel format 'yuv420p' for codec 'mjpeg', auto-selecting format 'yuvj420p'                                                                         
    [buffer @ 0x9250840] w:800 h:600 pixfmt:yuv420p                                 
    [scale @ 0x92508a0] w:800 h:600 fmt:yuv420p -> w:120 h:90 fmt:yuvj420p flags:0x4
    Output #0, rawvideo, to 'output.jpg':
      Metadata:
        encoder         : Lavf53.2.0
        Stream #0.0: Video: mjpeg, yuvj420p, 120x90 [PAR 4:3 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 25 tbc
    Stream mapping:
      Stream #0.0 -> #0.0
    Press ctrl-c to stop encoding
    [buffer @ 0x9250840] Buffering several frames is not supported. Please consume all available frames before adding a new one.                                    
    frame=    0 fps=  0 q=0.0 size=       0kB time=10000000000.00 bitrate=   0.0kbit
    Last message repeated 15448 times
    frame=    1 fps=  0 q=3.4 Lsize=       3kB time=0.04 bitrate= 598.8kbits/s    
    video:3kB audio:0kB global headers:0kB muxing overhead 0.000000%
    

    如何使用FFmpeg从视频的自定义位置提取缩略图而不受输入格式的影响?

    使用
    itsoffset
    选项尝试以下操作:

    ffmpeg -itsoffset 4 -i "$INFILE" -vcodec png -vframes 1 -an -f rawvideo -s 120x90 -y "$OUTFILE"
    
    itscoffset
    上的FFmpeg文档:

    以秒为单位设置输入时间偏移。[-]hh:mm:ss[.xxx]语法也受支持。偏移量被添加到输入文件的时间戳中。指定正偏移意味着相应的流延迟偏移秒


    不,它不起作用。每次我运行时,它只从视频中提取第一帧,而不考虑我设置为
    -itoffset
    的参数。你知道为什么吗?如果有人稍后发现这个,请稍后回复。我相信参数
    -itscoffset
    应该是负数。在这种情况下,
    -4
    因为您希望更早地移动视频流,而不是延迟它。