[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