[FFmpeg-user] Pixel format: default and filter?

amindfv at mailbox.org amindfv at mailbox.org
Sun Sep 13 02:03:16 EEST 2020

I have two videos (call them a.mov and b.mov) with the same width, height, pixel format, etc.

ffprobe reports them as having 'yuv420p10le' pixel format.

If I do a trivial conversion:

    ffmpeg -i a.mov out.mov

ffprobe reports out.mov as still being yuv420p10le.

But if I create a trivial filter:

    ffmpeg -i a.mov -i b.mov -filter_complex '[0:v][1:v]overlay' out.mov

ffprobe now reports out.mov being yuv420p. Is this an implicit conversion to a lower bit depth?

I can get out.mov to stay at 10-bit color with:

    ffmpeg -i a.mov -i b.mov -pix_fmt yuv420p10le -filter_complex '[0:v][1:v]overlay' out.mov

But I wonder if it's being downsampled and then upsampled, resulting in a loss of quality. I tried "-pix_fmt +", and it gave an error:

    The filters 'graph 0 input from stream 0:0' and 'Parsed_overlay_0' do not have a common format and automatic conversion is disabled.
    Error reinitializing filters!
    Failed to inject frame into filter network: Invalid argument
    Error while processing the decoded data for stream #1:0

Does this mean my downsampling theory is correct? Everything should have a common format (the 2 input files, the output file, and hopefully the filter).


More information about the ffmpeg-user mailing list