FFmpeg converting image sequence to video results

2019-01-07 22:53发布

问题:

I've got a series of 361 .png files that I'm trying to convert to video, and for whatever reason the resulting video is just black. Here is the FFmpeg code I'm using:

ffmpeg -f image2 -i "FeatureTour_%05d.png" -r 30 -vcodec libx264 -b:v 9600k "FeatureTour.mp4"

The files are formatted correctly (FeatureTour_00001.png) and no errors are thrown. It just results in a 160kb mp4 files that's black.

Any idea what I'm doing wrong?

EDIT

Here is my output after using the above code:

ffmpeg version N-46206-g0e4d34e Copyright (c) 2000-2012 the FFmpeg developers
  built on Oct 30 2012 23:07:44 with llvm-gcc 4.2.1 (LLVM build 2336.11.00)
  configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libaacplus --enable-libass --enable-libcelt --enable-libfaac --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-openssl --enable-libopus --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --prefix=/usr/local
  libavutil      52.  1.100 / 52.  1.100
  libavcodec     54. 70.100 / 54. 70.100
  libavformat    54. 35.100 / 54. 35.100
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 20.113 /  3. 20.113
  libswscale      2.  1.101 /  2.  1.101
  libswresample   0. 16.100 /  0. 16.100
  libpostproc    52.  1.100 / 52.  1.100
[image2 @ 0x7fa68381e200] max_analyze_duration 5000000 reached at 5000000
Input #0, image2, from 'FeatureTour_%05d.png':
  Duration: 00:00:14.44, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: png, rgb24, 114x151 [SAR 2835:2835 DAR 114:151], 25 fps, 25 tbr, 25 tbn, 25 tbc
[libx264 @ 0x7fa683826c00] using SAR=1/1
[libx264 @ 0x7fa683826c00] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x7fa683826c00] profile High 4:4:4 Predictive, level 3.0, 4:4:4 8-bit
[libx264 @ 0x7fa683826c00] 264 - core 125 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - 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=12 lookahead_threads=2 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=abr mbtree=1 bitrate=9600 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'FeatureTour.mp4':
  Metadata:
    encoder         : Lavf54.35.100
    Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv444p, 114x151 [SAR 1:1 DAR 114:151], q=-1--1, 9600 kb/s, 15360 tbn, 30 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (png -> libx264)
Press [q] to stop, [?] for help
frame=  432 fps=0.0 q=-2.0 Lsize=     152kB time=00:00:14.33 bitrate=  86.9kbits/s dup=71 drop=0    
video:146kB audio:0kB subtitle:0 global headers:0kB muxing overhead 3.905020%
[libx264 @ 0x7fa683826c00] frame I:3     Avg QP: 0.06  size:  8557
[libx264 @ 0x7fa683826c00] frame P:135   Avg QP: 0.10  size:   653
[libx264 @ 0x7fa683826c00] frame B:294   Avg QP: 0.43  size:   120
[libx264 @ 0x7fa683826c00] consecutive B-frames:  8.8%  0.9%  1.4% 88.9%
[libx264 @ 0x7fa683826c00] mb I  I16..4: 30.0%  0.4% 69.6%
[libx264 @ 0x7fa683826c00] mb P  I16..4:  2.1%  0.0%  1.9%  P16..4:  7.5%  1.2%  0.8%  0.0%  0.0%    skip:86.5%
[libx264 @ 0x7fa683826c00] mb B  I16..4:  0.2%  0.0%  0.1%  B16..8:  4.4%  0.3%  0.2%  direct: 0.9%  skip:93.8%  L0:46.5% L1:48.9% BI: 4.5%
[libx264 @ 0x7fa683826c00] final ratefactor: -45.15
[libx264 @ 0x7fa683826c00] 8x8 transform intra:0.7% inter:19.3%
[libx264 @ 0x7fa683826c00] coded y,u,v intra: 44.4% 32.1% 31.5% inter: 2.3% 1.6% 1.4%
[libx264 @ 0x7fa683826c00] i16 v,h,dc,p: 25% 75%  0%  0%
[libx264 @ 0x7fa683826c00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 40% 10%  0%  5%  0% 10%  0%  5%
[libx264 @ 0x7fa683826c00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 16% 71%  5%  1%  1%  1%  2%  1%  2%
[libx264 @ 0x7fa683826c00] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7fa683826c00] ref P L0: 88.0%  3.9%  5.0%  3.1%
[libx264 @ 0x7fa683826c00] ref B L0: 85.4% 12.4%  2.1%
[libx264 @ 0x7fa683826c00] ref B L1: 98.1%  1.9%
[libx264 @ 0x7fa683826c00] kb/s:82.86

回答1:

Add -pix_fmt yuv420p as an output option

ffmpeg -framerate 30 -i input_%05d.png -c:v libx264 -crf 23 -pix_fmt yuv420p output.mp4

Otherwise it will output a sampling scheme of 4:4:4, as shown in your console output, which your player does not support.

Unrelated changes

  • The default frame rate for the image file demuxer is 25, and it uses the -framerate option instead of -r. If you want the output to be a different rate, then set the frame rate as an input option and the output will use the same rate. Otherwise, it will drop or duplicate frames due to the rate difference. Although, you may need to supply both an input (using -framerate) and output (using -r) frame rate if you require different rates for both and don't mind frame duplicates/drops.

  • Using -crf instead of -b:v is generally recommended unless you need to target a specific output file size. Use the highest value that still gives you an acceptable quality (23 is default). See FFmpeg Wiki: H.264 Encoding Guide for more info.

  • Lastly, I removed -f image2 which is superfluous.



标签: video ffmpeg