video - 为什么ffmpeg输出以0001而不是0000开头的帧?

标签 video ffmpeg

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为 on-topic对于堆栈溢出。


2年前关闭。







Improve this question




我正在使用 ffmpeg 从视频中提取帧。一切正常,但有些奇怪:输出的编号总是以 0001 而不是 0000 开头。下面是一个最小的工作示例,来自控制台的输出和生成的帧的图片。我在 Win10 上使用 windows shell。

ffmpeg -i P1390752.MP4 -vframes 4 frame%%04d.png

控制台输出:
C:\Users\xxxx>ffmpeg -i P1390752.MP4 -vframes 4 frame%04d.png
ffmpeg version git-2020-01-15-0dc0837 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9.2.1 (GCC) 20200111
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
  libavutil      56. 38.100 / 56. 38.100
  libavcodec     58. 65.103 / 58. 65.103
  libavformat    58. 35.102 / 58. 35.102
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 71.100 /  7. 71.100
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002341f489e40] st: 0 edit list: 1 Missing key frame while searching for timestamp: 3600
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002341f489e40] st: 0 edit list 1 Cannot find an index entry before timestamp: 3600.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'P1390752.MP4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42avc1
    creation_time   : 2020-01-29T13:35:55.000000Z
  Duration: 00:00:08.16, start: 0.000000, bitrate: 27084 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 26830 kb/s, 50 fps, 50 tbr, 180k tbn, 100 tbc (default)
    Metadata:
      creation_time   : 2020-01-29T13:35:55.000000Z
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 124 kb/s (default)
    Metadata:
      creation_time   : 2020-01-29T13:35:55.000000Z
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> png (native))
Press [q] to stop, [?] for help
Output #0, image2, to 'frame%04d.png':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42avc1
    encoder         : Lavf58.35.102
    Stream #0:0(und): Video: png, rgb24, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 50 fps, 50 tbn, 50 tbc (default)
    Metadata:
      creation_time   : 2020-01-29T13:35:55.000000Z
      encoder         : Lavc58.65.103 png
frame=    4 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.08 bitrate=N/A speed=0.0922x
video:5622kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

到目前为止我尝试了什么:
1)我将输出限制为 4 帧,否则需要很长时间。但是当我删除帧数并提取整个视频时,问题仍然存在。当使用带有 -ss 和持续时间的起点时,问题仍然存在。
2) 当我使用 jpg 作为输出时,我收到一些关于已弃用像素格式的警告,但编号问题仍然存在。

我无法摆脱关于关键帧的前两个警告,也许这是相关的?

最佳答案

这恰好是帧序列输出的默认起始索引。您可以通过添加 -start_number 0 来覆盖它.

关于video - 为什么ffmpeg输出以0001而不是0000开头的帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60044089/

相关文章:

c++ - 将 NPAPI 插件与 FFmpeg 链接使 Firefox 无法加载插件

android - 压缩视频FFMPEG不起作用

video - YouTube视频分析:观看次数计数器

encoding - FFmpeg - 将 AC3 5.1 下混到 Fraunhofer FDK ACC 2.1

ffmpeg - 如何删除 ffmpeg 元数据 "software lavf55.7.100"

android - 为黑白(和灰色)Alpha 信息视频图像添加透明度

ffmpeg 通过 rtp 流式传输 RAW TS

c - 如何用C读取视频文件

javascript - HTML5 : Play local video from iPad camera roll

javascript - 显示来自 Blob Javascript 的视频