0

I'm using these parameters to encode multiple PNGs into a MP4 file using FFmpeg:

-vsync 2 -safe 0 -f concat -i ".\concat.txt" -c:v libx264 
-pix_fmt yuv420p -vf "pad=width=2044:height=1152:x=0:y=0:color=black" -y ".\Test.mp4"

But it's creating a video in which some players are not capable of displaying the correct contrast level. What's happening? I'm probably doing something wrong.

Windows Media Player and MP-HC are not displaying with the correct contrast level, but the Movies and TV is able to.

Image

Here is the MediaInfo of the video:

General
Complete name                  : .\Color.mp4
Format                         : MPEG-4
Format profile                 : Base Media
Codec ID                       : isom (isom/iso2/avc1/mp41)
File size                      : 550 KiB
Duration                       : 6 s 560 ms
Overall bit rate               : 687 kb/s
Writing application            : Lavf58.29.100

Video
ID                             : 1
Format                         : AVC
Format/Info                    : Advanced Video Codec
Format profile                 : High@L5
Format settings, CABAC         : Yes
Format settings, RefFrames     : 4 frames
Codec ID                       : avc1
Codec ID/Info                  : Advanced Video Coding
Duration                       : 6 s 560 ms
Bit rate                       : 684 kb/s
Width                          : 2 044 pixels
Height                         : 1 152 pixels
Display aspect ratio           : 16:9
Frame rate mode                : Variable
Frame rate                     : 15.244 FPS
Minimum frame rate             : 12.500 FPS
Maximum frame rate             : 25.000 FPS
Color space                    : YUV
Chroma subsampling             : 4:2:0
Bit depth                      : 8 bits
Scan type                      : Progressive
Bits/(Pixel*Frame)             : 0.019
Stream size                    : 548 KiB (100%)
Writing library                : x264 core 158 r2984 3759fcb
Encoding settings              : 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=18 / lookahead_threads=3 / 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

And here is the MediaInfo of the PNG:

General
Format                         : PNG
Format/Info                    : Portable Network Graphic
File size                      : 1.35 MiB

Image
Format                         : PNG
Format/Info                    : Portable Network Graphic
Format_Compression             : LZ77
Width                          : 2 043 pixels
Height                         : 1 152 pixels
Bit depth                      : 24 bits
Compression mode               : Lossless
Stream size                    : 1.35 MiB (100%)

I'm using this version of FFmpeg (nightly build, but I also tested with 4.2.1):

ffmpeg version git-2019-10-25-b78227e Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 9.2.1 (GCC) 20191010
  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-ffnvcodec --enable-cuvid --enable-d3d11va 
       --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt 
       --enable-amf
      libavutil      56. 35.100 / 56. 35.100
      libavcodec     58. 59.100 / 58. 59.100
      libavformat    58. 33.100 / 58. 33.100
      libavdevice    58.  9.100 / 58.  9.100
      libavfilter     7. 59.100 /  7. 59.100
      libswscale      5.  6.100 /  5.  6.100
      libswresample   3.  6.100 /  3.  6.100
      libpostproc    55.  6.100 / 55.  6.100

EDIT

So, after disabling the Contrast Enhancement in Intel UHD Graphics Control Panel, the video plays normally in Media Player - Home Cinema and in Windows Media Player:

After fixing

Now, why was the Movies and TV app not affected by this option? Was it because it was running with the discrete GPU instead? Or maybe it was not using the standard video codec?

  • I nowhere see what color range your input files and output video is. – Paul B. Mahol Oct 27 '19 at 8:16
2

Are you, by any chance, using an Intel Graphics card? If so, try opening Intel Graphics Properties and try setting Input Range and Standard Color Correction to Application settings

  • HAHA! I did disable the Contrast Enhancer in the Intel UHD Graphics Control Panel and now the video played by MP-HC is displaying correctly. Thanks. Now, why was the other player not affected by this option? – Nicke Manarin Oct 28 '19 at 13:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.