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?
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?