ffmpeg concat视频长度不是持续时间的总和

时间:2019-11-08 23:45:44

标签: ffmpeg

我只是想将某些图像放入具有特定时长的视频中。我正在使用命令

ffmpeg -f concat -i concat.txt -r 30 video.mp4
# concat.txt

file capture12.png
duration 1
file capture57.png
duration 3
file capture156.png
duration 7
file capture234.png
duration 5
file capture272.png
duration 3

我的控制台的输出是

ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 9.1.1 (GCC) 20190807
  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-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, concat, from 'concat.txt':
  Duration: 00:00:19.00, start: 0.000000, bitrate: 0 kb/s
    Stream #0:0: Video: png, rgba(pc), 983x553, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (png (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 000001b3e55c5c80] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 000001b3e55c5c80] profile High 4:4:4 Predictive, level 3.1, 4:4:4, 8-bit
[libx264 @ 000001b3e55c5c80] 264 - core 158 r2984 3759fcb - H.264/MPEG-4 AVC codec - Copyleft 2003-2019 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'video.mp4':
  Metadata:
    encoder         : Lavf58.29.100
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv444p, 983x553, q=-1--1, 30 fps, 15360 tbn, 30 tbc
    Metadata:
      encoder         : Lavc58.54.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
frame=  629 fps=400 q=-1.0 Lsize=     124kB time=00:00:20.86 bitrate=  48.8kbits/s dup=624 drop=0 speed=13.3x
video:116kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 7.050883%
[libx264 @ 000001b3e55c5c80] frame I:3     Avg QP:13.09  size: 20222
[libx264 @ 000001b3e55c5c80] frame P:158   Avg QP:10.80  size:   207
[libx264 @ 000001b3e55c5c80] frame B:468   Avg QP:13.75  size:    53
[libx264 @ 000001b3e55c5c80] consecutive B-frames:  0.8%  0.0%  0.0% 99.2%
[libx264 @ 000001b3e55c5c80] mb I  I16..4: 23.0% 58.6% 18.4%
[libx264 @ 000001b3e55c5c80] mb P  I16..4:  0.0%  0.0%  0.2%  P16..4:  0.1%  0.0%  0.0%  0.0%  0.0%    skip:99.7%
[libx264 @ 000001b3e55c5c80] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  1.3%  0.0%  0.0%  direct: 0.0%  skip:98.7%  L0:66.5% L1:33.5% BI: 0.0%
[libx264 @ 000001b3e55c5c80] 8x8 transform intra:54.0% inter:7.4%
[libx264 @ 000001b3e55c5c80] coded y,u,v intra: 15.3% 0.7% 0.7% inter: 0.0% 0.0% 0.0%
[libx264 @ 000001b3e55c5c80] i16 v,h,dc,p: 86% 14%  0%  0%
[libx264 @ 000001b3e55c5c80] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 65%  7% 28%  0%  0%  0%  0%  0%  0%
[libx264 @ 000001b3e55c5c80] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 50% 14% 14%  3%  4%  5%  4%  4%  3%
[libx264 @ 000001b3e55c5c80] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 000001b3e55c5c80] ref P L0: 87.3%  6.3%  5.6%  0.8%
[libx264 @ 000001b3e55c5c80] ref B L0: 45.3% 54.3%  0.4%
[libx264 @ 000001b3e55c5c80] ref B L1: 99.6%  0.4%
[libx264 @ 000001b3e55c5c80] kb/s:45.07

我可以清楚地看到它{应该Duration 00:00:19.00,然后说最终的视频是00:00:20.86。如何获取这些数字以匹配?

1 个答案:

答案 0 :(得分:0)

从图像列表制作视频时,-r不可靠。

您必须进行两项更改:

复制concat列表中的最后一个图像条目,

# concat.txt

file capture12.png
duration 1
file capture57.png
duration 3
file capture156.png
duration 7
file capture234.png
duration 5
file capture272.png
duration 3
file capture272.png

并使用fps过滤器更改帧率。

ffmpeg -f concat -i concat.txt -vf fps=30 video.mp4