Log in

View Full Version : Odd Video pixel format


jriker1
5th October 2021, 00:33
I have a mkv HDR10 file that I'm trying to re-encode and am getting some weird data when trying to run it thru ffprobe. Plus the file output is large for what I'm putting thru it so curious. Soooo.

Interrogating the file with ffprobe and basically -i:

Stream #0:0(eng): Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 23.98 tbc
Metadata:
BPS-eng : 56016154
DURATION-eng : 01:56:47.042000000
NUMBER_OF_FRAMES-eng: 168001
NUMBER_OF_BYTES-eng: 49063443297
SOURCE_ID-eng : 001011
_STATISTICS_WRITING_APP-eng: mkvmerge v49.0.0 ('Sick Of Losing Soulmates') 64-bit
_STATISTICS_WRITING_DATE_UTC-eng: 2020-12-02 09:32:05
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES SOURCE_ID

So shows yuv420p10le above

The end of that output has

Stream #0:12: Video: mjpeg (Baseline), yuvj444p(pc, bt470bg/unknown/unknown), 120x176, 90k tbr, 90k tbn, 90k tbc (attached pic)
Metadata:
filename : small_cover.jpg
mimetype : image/jpeg
Stream #0:13: Video: mjpeg (Baseline), yuvj444p(pc, bt470bg/unknown/unknown), 213x120, 90k tbr, 90k tbn, 90k tbc (attached pic)
Metadata:
filename : small_cover_land.jpg
mimetype : image/jpeg
Stream #0:14: Video: mjpeg (Baseline), yuvj444p(pc, bt470bg/unknown/unknown), 600x882, 90k tbr, 90k tbn, 90k tbc (attached pic)
Metadata:
filename : cover.jpg
mimetype : image/jpeg
Stream #0:15: Video: mjpeg (Baseline), yuvj444p(pc, bt470bg/unknown/unknown), 1067x600, 90k tbr, 90k tbn, 90k tbc (attached pic)
Metadata:
filename : cover_land.jpg
mimetype : image/jpeg

So references to yuvj444p

When i run my usual code to show HDR info:

ffprobe.exe -hide_banner -loglevel warning -select_streams v -print_format json -show_frames -read_intervals "%+#1" -i <input_file>

I get:

"frames": [
{
"media_type": "video",
"stream_index": 12,
"key_frame": 1,
"pkt_size": "5037",
"width": 120,
"height": 176,
"pix_fmt": "yuvj444p",
"pict_type": "I",
"coded_picture_number": 0,
"display_picture_number": 0,
"interlaced_frame": 0,
"top_field_first": 0,
"repeat_pict": 0,
"color_range": "pc",
"color_space": "bt470bg",
"chroma_location": "center"
}
]
}

So that, which is usually reliable thinks the pixel format is yuvj444p.

So is it yuvj444p or yuv420p10le

Now here's the odd part, if I run say:

ffmpeg.exe -i <input_file>.mkv -c:v libx265 -x265-params level=51:hdr10=1:hdr-opt=1:high-tier=1:repeat-headers=1:colorprim=bt2020:transfer=smpte2084:colormatrix=bt2020nc:master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(40000000,50):max-cll=1000,228:crf=16:chromaloc=1:no-sao=1:info=0:range=limited -preset slower -pix_fmt yuv420p10le -vf crop=3840:2160:0:0 -sn -an <output>.hevc

I get with a pixel format of yuvj444p a 57GB file which is bigger than the source, and 34GB file using yuv420p10le. I have had in the past source files that I did crf 13 and were longer duration and the output was smaller than this so I am a bit confused with this source.

Any thoughts on what's going on and why the output is so big?

kolak
5th October 2021, 12:52
Main video is yuv 10bit.
Those at the end are cover images, so totally different data to main video. It says it quite clearly.

Stream #0:12: Video: mjpeg (Baseline), yuvj444p(pc, bt470bg/unknown/unknown), 120x176, 90k tbr, 90k tbn, 90k tbc (attached pic)
Metadata:
filename : small_cover.jpg
mimetype : image/jpeg