FFMPEG:自定义序列输入图像

时间:2016-07-14 07:30:50

标签: ffmpeg

我是从一组图片中创建了一个视频。

命令如下:

ffmpeg -i bg.jpeg -i img_%d.png -filter_complex overlay=5:H-h-5[b]-shortest testvid.mp4

问题:

输入-i img_%d.png表示img_0.pngimg_1.pngimg_2.png,...

但我有这样的自定义序列:{img_0.png, img_1.png, img_1.png, img_2.png, img_1.png, img5.png, img_4.png}

问题:

我可以将我的图像序列输入到ffmpeg的输入中吗?

更新

cmd:

ffmpeg -i bg.jpeg -f concat -fflags +genpts -i test.txt -filter_complex overlay=5:H-h-5 -shortest testvid.mp4

输出:

ffmpeg version 3.1.1 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
  configuration: --enable-gpl --enable-libx264 --enable-libfreetype
  libavutil      55. 28.100 / 55. 28.100
  libavcodec     57. 48.101 / 57. 48.101
  libavformat    57. 41.100 / 57. 41.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 47.100 /  6. 47.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  1.100 /  2.  1.100
  libpostproc    54.  0.100 / 54.  0.100
Input #0, image2, from 'bg.jpeg':
  Duration: 00:00:00.04, start: 0.000000, bitrate: 47329 kb/s
    Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 600x800 [SAR 1:1 DAR 3:4], 25 tbr, 25 tbn, 25 tbc
Input #1, concat, from 'test.txt':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #1:0: Video: png, pal8(pc), 200x200, 25 tbr, 25 tbn, 25 tbc
File 'testvid.mp4' already exists. Overwrite ? [y/N] y
[swscaler @ 0x2a18360] deprecated pixel format used, make sure you did set range correctly
[libx264 @ 0x2a05d80] using SAR=1/1
[libx264 @ 0x2a05d80] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 0x2a05d80] profile High, level 3.1
[libx264 @ 0x2a05d80] 264 - core 148 r2705 3f5ed56 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - 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=-2 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
[mp4 @ 0x2a04b20] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
Output #0, mp4, to 'testvid.mp4':
  Metadata:
    encoder         : Lavf57.41.100
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 600x800 [SAR 1:1 DAR 3:4], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
    Metadata:
      encoder         : Lavc57.48.101 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream mapping:
  Stream #0:0 (mjpeg) -> overlay:main
  Stream #1:0 (png) -> overlay:overlay
  overlay -> Stream #0:0 (libx264)
Press [q] to stop, [?] for help
[concat @ 0x29e2400] DTS -230575710986777 < 0 out of order
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
DTS -230575710986777, next:40000 st:0 invalid dropping
PTS -230575710986777, next:40000 invalid dropping st:0
frame=    4 fps=0.0 q=-1.0 Lsize=      39kB time=00:00:00.04 bitrate=8050.9kbits/s dup=0 drop=65 speed=0.516x    
video:39kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.222729%
[libx264 @ 0x2a05d80] frame I:1     Avg QP:24.64  size: 37536
[libx264 @ 0x2a05d80] frame P:1     Avg QP:27.18  size:  1085
[libx264 @ 0x2a05d80] frame B:2     Avg QP:29.93  size:    73
[libx264 @ 0x2a05d80] consecutive B-frames: 25.0%  0.0% 75.0%  0.0%
[libx264 @ 0x2a05d80] mb I  I16..4:  1.7% 86.1% 12.2%
[libx264 @ 0x2a05d80] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4:  1.7%  1.3%  1.5%  0.0%  0.0%    skip:95.5%
[libx264 @ 0x2a05d80] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  2.4%  0.0%  0.0%  direct: 0.0%  skip:97.6%  L0:62.6% L1:37.4% BI: 0.0%
[libx264 @ 0x2a05d80] 8x8 transform intra:86.1% inter:33.9%
[libx264 @ 0x2a05d80] coded y,uvDC,uvAC intra: 91.5% 84.4% 38.5% inter: 0.6% 0.4% 0.1%
[libx264 @ 0x2a05d80] i16 v,h,dc,p:  9% 12%  3% 76%
[libx264 @ 0x2a05d80] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 19% 17%  8%  4%  5%  5%  7% 10%
[libx264 @ 0x2a05d80] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 18% 10% 10%  9%  7% 10%  8%  7%
[libx264 @ 0x2a05d80] i8c dc,h,v,p: 45% 21% 26%  8%
[libx264 @ 0x2a05d80] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x2a05d80] ref B L0: 84.2% 15.8%
[libx264 @ 0x2a05d80] kb/s:1938.35

2 个答案:

答案 0 :(得分:1)

您可以将concat demuxer与自定义序列一起使用。

首先,创建一个文本文件:

file 'img_0.png'
file 'img_1.png'
file 'img_1.png'
file 'img_2.png'
file 'img_1.png'
file 'img5.png'
file 'img_4.png'

然后运行

ffmpeg -i bg.jpeg -f concat -r 25 -i list.txt -filter_complex "overlay=5:H-h-5" -shortest out.mp4

修改:对于PNG和大多数其他图片格式,应明确指定r以初始化列表中每个图片条目的持续时间。

答案 1 :(得分:0)

我只是遇到了同样的问题,如果您需要在程序执行过程中生成图像列表,请考虑在每行duration <sec>之后添加file <path>字符串,这将使过滤器推断DTS。如下所示:

file 'img.00000020.png'
duration 0.03333
file 'img.00000021.png'
duration 0.03333
...

对于脱机转换一堆图像的情况,内联glob效果很好(所以是的-DTS错误来自concat过滤器),但是以下bash命令可以提供空运行列表:

for i in img.*.png; do echo file \'$i\'; echo duration 0.03333; done > list.txt