[FFmpeg-user] Output file experience pix_format change

Bazza lamia at jeack.com.au
Fri Jan 30 03:40:07 CET 2015


Just for learning fun, I have been playing with the 
colorbalance, colorlevels and colorchannelmixer 
filters as outlined here :-
http://ffmpeg.org/ffmpeg-all.html#file

The default viewer, to see what has happened, is Mplayer.
Using _THAT_ viewer , results in a very greyed output 
with no discernable detail, however VLC and FFPLAY will 
display the resultant file quite well. At first, I thought 
the fault may have been in the Zeranoe build. Well it isn't.

Now if I do this .... :-

ffmpeg -y -threads auto -i File1.mp4 
-vcodec libx264 -vf scale=720:576 -acodec copy outfile.mp4

...the outputfile has a pix format of yup420p (same as it's input
file). For most (all ?) of the "standard" -vf parameters and for 
all of the mp4 input files I used as tests, the pix_format remains 
at yuv420p in the resulting output.

However when using colorbalance/colorlevels/colorchannelmixer, 
the output files has undergone a pix_format change to yuv444p 
and it is this which disturbs MPLAYER. Irritating though the 
Mplayer malfunction(?) might be, it is the _format_ change I am
focussing on (and yes, I see that H264 likes a 444 default).

--- As an example ...
This will effect a format in the output. (Mplayer unhappy)
  ffmpeg -y -threads auto -i File1.mp4 -vcodec libx264 \
  -vf colorlevels=rimax=0.902:gimax=0.902:bimax=0.90 -acodec copy \
  outfile.mp4

--- but this restores the format(as you would expect - Mplayer happy)
  ffmpeg -y -threads auto -i File1.mp4 -vcodec libx264 \
  -vf colorlevels=rimax=0.902:gimax=0.902:bimax=0.90 -acodec copy \
  -pix_fmt yuv420p file.mp4

I suppose my basic question is this. 
Should the output be undergoing this format alteration under any
circumstances? Or, put another way, does libx264 ignore some
recognition of the pix format some of the time? If so, why?
Perhaps those color commands are forcing new 'acknowledgements'
on the 264 filter by necessity?

It seems odd that some parameters leave the file untouched and a
little confusing when one has to remember extra behaviour patterns.
Just trying to clear up my understanding.

Just to show it really is happening:-

ffmpeg -y -threads auto -i H:\File1.mp4 -acodec copy -vcodec libx264
-vf colorlevels=romin=0.5:gomin=0.5:bomin=0.5  e:\Outfile.mp4

ffmpeg version N-69375-g4155f2d Copyright (c) 2000-2015 the FFmpeg
developers
  built on Jan 28 2015 22:14:02 with gcc 4.9.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads
--enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r
--enable-gnutls --enable-iconv --enable-libass --enable-libbluray
--enable-libbs2b --enable-libcaca --enable-libfreetype 
--enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug
--enable-libmp3lame --enable-libopencore-amrnb
--enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus
--enable-librtmp --enable-libschroedinger --enable-libsoxr
--enable-libspeex --enable-libtheora --enable-libtwolame 
--enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc
--enable-libvorbis --enable-libvpx --enable-libwavpack
--enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs
--enable-libxvid --enable-lzma --enable-decklink --enable-zlib
  libavutil      54. 18.100 / 54. 18.100
  libavcodec     56. 21.101 / 56. 21.101
  libavformat    56. 19.100 / 56. 19.100
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5.  9.101 /  5.  9.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'tk.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2014-03-01 03:29:00
Duration: 00:03:49.62, start: 0.000000, bitrate: 1326 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
1280x720 [SAR 1:1 DAR 16:9], 1131 kb/s, 25 fps, 25 tbr, 25 tbn, 
50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz,
    stereo, fltp, 191 kb/s (default)
    Metadata:
      creation_time   : 2014-03-01 03:29:01
      handler_name    : IsoMedia File Produced by Google, 5-11-2011

No pixel format specified, yuv444p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.

[libx264 @ 0000000004d8e9c0] using SAR=1/1
[libx264 @ 0000000004d8e9c0] using cpu capabilities: MMX2 SSE2Fast
SSSE3 SSE4.2 AVX
[libx264 @ 0000000004d8e9c0] profile High 4:4:4 Predictive, level 3.1,
4:4:4 8-bit
[libx264 @ 0000000004d8e9c0] 264 - core 144 r2525 40bb568 -
H.264/MPEG-4 AVC codec - Copyleft 2003-2014 -
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 b luray_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 'e:\output.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    encoder         : Lavf56.19.100
    Stream #0:0(und): Video: h264 (libx264) ([33][0][0][0] / 0x0021),
    yuv444p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 12800 tbn, 
    25 tbc (default)
  Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc56.21.101 libx264
     Stream #0:1(und): Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz,
     stereo, 191 kb/s (default)
  Metadata:
      creation_time   : 2014-03-01 03:29:01
      handler_name    : IsoMedia File Produced by Google, 5-11-2011
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 5740 fps= 52 q=-1.0 Lsize=   26187kB time=00:03:49.62 bitrate=
934.2kbits/s
video:20628kB audio:5382kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: 0.682319%
[libx264 @ 0000000004d8e9c0] frame I:43    Avg QP:16.33  size: 21000
[libx264 @ 0000000004d8e9c0] frame P:2945  Avg QP:20.14  size:  5617
[libx264 @ 0000000004d8e9c0] frame B:2752  Avg QP:22.29  size:  1336
[libx264 @ 0000000004d8e9c0] consecutive B-frames: 31.9% 10.5%  5.9%
51.7%
[libx264 @ 0000000004d8e9c0] mb I  I16..4: 23.4% 70.2%  6.4%
[libx264 @ 0000000004d8e9c0] mb P  I16..4:  4.6%  8.3%  0.1%  P16..4:
32.0%  4.5%  1.5%  0.0%  0.0%    skip:48.9%
[libx264 @ 0000000004d8e9c0] mb B  I16..4:  0.2%  0.3%  0.0%  B16..8:
24.5%  0.6%  0.0%  direct: 0.1%  skip:74.3%  L0:47.6% L1:51.9% BI: 0.5
%
[libx264 @ 0000000004d8e9c0] 8x8 transform intra:64.6% inter:97.9%
[libx264 @ 0000000004d8e9c0] coded y,u,v intra: 19.5% 6.9% 5.8% inter:
3.4% 1.3% 1.1%
[libx264 @ 0000000004d8e9c0] i16 v,h,dc,p: 41% 29% 12% 19%
[libx264 @ 0000000004d8e9c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28% 18%
38%  2%  3%  3%  3%  3%  2%
[libx264 @ 0000000004d8e9c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 41% 18%
13%  3%  6%  6%  5%  4%  3%
[libx264 @ 0000000004d8e9c0] Weighted P-Frames: Y:0.6% UV:0.2%
[libx264 @ 0000000004d8e9c0] ref P L0: 72.3%  4.3% 16.8%  6.6%  0.0%
[libx264 @ 0000000004d8e9c0] ref B L0: 86.5% 11.7%  1.8%
[libx264 @ 0000000004d8e9c0] ref B L1: 96.5%  3.5%
[libx264 @ 0000000004d8e9c0] kb/s:735.96

Thanks



More information about the ffmpeg-user mailing list