Video FFMPEG:以固定的时间间隔从视频中提取图像,前几帧被弄乱

Video FFMPEG:以固定的时间间隔从视频中提取图像,前几帧被弄乱,video,ffmpeg,Video,Ffmpeg,我想以固定的时间间隔从视频中提取一些帧,因此我使用了如下命令行: ffmpeg.exe -i input.mp4 -r 5 results\%d.jpg` 但是,前几帧之间的间隔与其余帧之间的间隔不同 例如,如果我同时执行ffmpeg.exe-I input.mp4-r25-t5 test\%d.jpg和ffmpeg.exe-I input.mp4-r5-t5 test2\%d.jpg(对于FPS25视频),我希望test2中的结果是test中间隔为5的结果的子序列。然而,我得到的是: 从缩

我想以固定的时间间隔从视频中提取一些帧,因此我使用了如下命令行:

ffmpeg.exe -i input.mp4 -r 5 results\%d.jpg`
但是,前几帧之间的间隔与其余帧之间的间隔不同

例如,如果我同时执行
ffmpeg.exe-I input.mp4-r25-t5 test\%d.jpg
ffmpeg.exe-I input.mp4-r5-t5 test2\%d.jpg
(对于FPS25视频),我希望
test2
中的结果是
test
中间隔为5的结果的子序列。然而,我得到的是:

从缩略图中可以明显看出,
test
中的图像112~125没有出现在
test2
中。仔细检查后发现,这两组结果之间的对应关系如下:

test  | test2
  1&2 |   1&2 (Those two frames are identical)
  3   |   3
  4   |   4
  9   |   5
 14   |   6
 19   |   7
...   | ...
104   |  24
109   |  25
(实际上,在比较最后几帧时,我刚刚意识到
test
中的结果有太多的马赛克。我通过添加选项
-q:v1
解决了这个问题。)

可以看出,
test2
的前几帧实际上是间隔1,而不是预期值5

这种行为的原因是什么?如何解决

如果有人想查看ffmpeg输出:

PS C:\Users\<username>\Documents\New folder> ffmpeg.exe -i input.mp4 -r 25 -t 5 test\%d.jpg
ffmpeg version N-50911-g9efcfbe Copyright (c) 2000-2013 the FFmpeg developers
  built on Mar 13 2013 21:26:48 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfi
g --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libg
sm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --ena
ble-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-lib
twolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxa
vs --enable-libxvid --enable-zlib
  libavutil      52. 19.100 / 52. 19.100
  libavcodec     55.  0.100 / 55.  0.100
  libavformat    55.  0.100 / 55.  0.100
  libavdevice    54.  4.100 / 54.  4.100
  libavfilter     3. 45.103 /  3. 45.103
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2015-05-05 04:46:16
  Duration: 00:49:04.96, start: 0.000000, bitrate: 386 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 524x360 [SAR 1:1 DAR 131:90], 287
 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 96 kb/s
    Metadata:
      creation_time   : 2015-05-05 04:46:21
      handler_name    : IsoMedia File Produced by Google, 5-11-2011
Output #0, image2, to 'test\%d.jpg':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    encoder         : Lavf55.0.100
    Stream #0:0(und): Video: mjpeg, yuvj420p, 524x360 [SAR 1:1 DAR 131:90], q=2-31, 200 kb/s, 90k tbn, 25 tbc
    Metadata:
      handler_name    : VideoHandler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> mjpeg)
Press [q] to stop, [?] for help
frame=  125 fps=0.0 q=0.0 Lsize=N/A time=00:00:05.00 bitrate=N/A
video:1140kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.001884%
PS C:\Users\<username>\Documents\New folder> ffmpeg.exe -i input.mp4 -r 5 -t 5 test2\%d.jpg
ffmpeg version N-50911-g9efcfbe Copyright (c) 2000-2013 the FFmpeg developers
  built on Mar 13 2013 21:26:48 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfi
g --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libg
sm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --ena
ble-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-lib
twolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxa
vs --enable-libxvid --enable-zlib
  libavutil      52. 19.100 / 52. 19.100
  libavcodec     55.  0.100 / 55.  0.100
  libavformat    55.  0.100 / 55.  0.100
  libavdevice    54.  4.100 / 54.  4.100
  libavfilter     3. 45.103 /  3. 45.103
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2015-05-05 04:46:16
  Duration: 00:49:04.96, start: 0.000000, bitrate: 386 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 524x360 [SAR 1:1 DAR 131:90], 287
 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 96 kb/s
    Metadata:
      creation_time   : 2015-05-05 04:46:21
      handler_name    : IsoMedia File Produced by Google, 5-11-2011
Output #0, image2, to 'test2\%d.jpg':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    encoder         : Lavf55.0.100
    Stream #0:0(und): Video: mjpeg, yuvj420p, 524x360 [SAR 1:1 DAR 131:90], q=2-31, 200 kb/s, 90k tbn, 5 tbc
    Metadata:
      handler_name    : VideoHandler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> mjpeg)
Press [q] to stop, [?] for help
frame=   25 fps=0.0 q=0.0 Lsize=N/A time=00:00:05.00 bitrate=N/A dup=0 drop=88
video:375kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.005728%
PS C:\Users\\Documents\New folder>ffmpeg.exe-i input.mp4-r 25-t5 test\%d.jpg
ffmpeg版本N-50911-G9EFCFE版权所有(c)2000-2013 ffmpeg开发者
根据gcc 4.7.2(gcc)于2013年3月13日21:26:48建成
配置:--enable-gpl--enable-version3--disable-w32threads--enable-avisynch--enable-bzlib--enable-fontconfi
g--enable-frei0r--enable gnutls--enable libass--enable libbluray--enable libcaca--enable libfreetype--enable libg
sm--enable libilbc--enable-libmp3lame--enable libopencore amrnb--enable libopencore amrwb--enable libopenjpeg--ena
ble libopus——enable librtmp——enable libschroedinger——enable libsoxr——enable libspeex——enable libthera——enable lib
twolame——enable libvo aacenc——enable libvo amrwbenc——enable libvorbis——enable libvpx——enable-libx264——enable libxa
vs—启用libxvid—启用zlib
libavutil 52。19.100 / 52. 19.100
libavcodec55。0.100 / 55.  0.100
libav55格式。0.100 / 55.  0.100
libav54设备。4.100 / 54.  4.100
libavfilter 3。45.103 /  3. 45.103
libswscale 2。2.100 /  2.  2.100
libswresample 0。17.102 /  0. 17.102
libroc 52。2.100 / 52.  2.100
输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自“Input.mp4”:
元数据:
主要品牌:mp42
次要版本:0
兼容品牌:isommp42
创建时间:2015-05-05 04:46:16
持续时间:00:49:04.96,开始时间:0.000000,比特率:386KB/s
流#0:0(und):视频:h264(约束基线)(avc1/0x31637661),yuv420p,524x360[SAR 1:1 DAR 131:90],287
kb/s,每秒25帧,每分钟25帧,每分钟25帧,每分钟25帧,每分钟50帧
元数据:
处理程序名称:VideoHandler
流#0:1(und):音频:aac(mp4a/0x6134706D),44100 Hz,立体声,fltp,96 kb/s
元数据:
创建时间:2015-05-05 04:46:21
handler_名称:谷歌制作的IsoMedia文件,5-11-2011
输出#0,图像2,到“test\%d.jpg”:
元数据:
主要品牌:mp42
次要版本:0
兼容品牌:isommp42
编码器:Lavf55.0.100
流#0:0(und):视频:mjpeg,yuvj420p,524x360[SAR 1:1 DAR 131:90],q=2-31200KB/s,90k tbn,25TBC
元数据:
处理程序名称:VideoHandler
流映射:
流#0:0->#0:0(h264->mjpeg)
按[q]停止,按[?]获取帮助
帧=125 fps=0.0 q=0.0 Lsize=N/A时间=00:00:05.00比特率=N/A
视频:1140kB音频:0kB字幕:0全局标题:0kB muxing开销-100.001884%
PS C:\Users\\Documents\New folder>ffmpeg.exe-i input.mp4-r 5-t 5 test2\%d.jpg
ffmpeg版本N-50911-G9EFCFE版权所有(c)2000-2013 ffmpeg开发者
根据gcc 4.7.2(gcc)于2013年3月13日21:26:48建成
配置:--enable-gpl--enable-version3--disable-w32threads--enable-avisynch--enable-bzlib--enable-fontconfi
g--enable-frei0r--enable gnutls--enable libass--enable libbluray--enable libcaca--enable libfreetype--enable libg
sm--enable libilbc--enable-libmp3lame--enable libopencore amrnb--enable libopencore amrwb--enable libopenjpeg--ena
ble libopus——enable librtmp——enable libschroedinger——enable libsoxr——enable libspeex——enable libthera——enable lib
twolame——enable libvo aacenc——enable libvo amrwbenc——enable libvorbis——enable libvpx——enable-libx264——enable libxa
vs—启用libxvid—启用zlib
libavutil 52。19.100 / 52. 19.100
libavcodec55。0.100 / 55.  0.100
libav55格式。0.100 / 55.  0.100
libav54设备。4.100 / 54.  4.100
libavfilter 3。45.103 /  3. 45.103
libswscale 2。2.100 /  2.  2.100
libswresample 0。17.102 /  0. 17.102
libroc 52。2.100 / 52.  2.100
输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自“Input.mp4”:
元数据:
主要品牌:mp42
次要版本:0
兼容品牌:isommp42
创建时间:2015-05-05 04:46:16
持续时间:00:49:04.96,开始时间:0.000000,比特率:386KB/s
流#0:0(und):视频:h264(约束基线)(avc1/0x31637661),yuv420p,524x360[SAR 1:1 DAR 131:90],287
kb/s,每秒25帧,每分钟25帧,每分钟25帧,每分钟25帧,每分钟50帧
元数据:
处理程序名称:VideoHandler
流#0:1(und):音频:aac(mp4a/0x6134706D),44100 Hz,立体声,fltp,96 kb/s
元数据:
创建时间:2015-05-05 04:46:21
handler_名称:谷歌制作的IsoMedia文件,5-11-2011
将#0,image2输出到“test2\%d.jpg”:
元数据:
主要品牌:mp42
次要版本:0
兼容品牌:isommp42
编码器:Lavf55.0.100
流#0:0(und):视频:mjpeg,yuvj420p,524x360[SAR 1:1 DAR 131:90],q=2-31200KB/s,90k tbn,5TBC
元数据:
处理程序名称:VideoHandler
流映射:
流#0:0->#0:0(h264->mjpeg)
按[q]停止,按[?]获取帮助
帧=25 fps=0.0 q=0.0 Lsize=N/A时间=00:00:05.00位