Log in

View Full Version : H.264 Level for 1920x1080 60p video


wigor1
29th March 2019, 09:34
According H.264 specifications, 1920x1080 60p video should use Level 4.2 (2,048×1,080@60).

However some old hardware players (e.g. Popcorn Hour A-210) can play 1920x1080 60p videos created only with Level 4.1.

By default, ffmpeg/libx264 automatically sets Level 4.2 for a created 1920x1080 60p videos.

Should I manually change Level to 4.1 for such video for better compatibility?

huhn
29th March 2019, 11:30
if compatibly is your aim you can't create 1080p60 then. you can not simply change the level it will not work you need level 4.2 for 1080p60.

so you can either make a video that is 4.1 complain(720p60 or 1080 interlaced with 60 fields or 1080p30) or you just ignore it and hope it works on some systems. it's not impossible that a level check is ignored and when the bit rate isn't to high it may just work.
4.2 is outside the BD spec so it's not that important for older hardware player.

don't take this as a last word i'm only interpreting the spec here.

wigor1
29th March 2019, 14:39
Thanks for your advice. I understand your arguments.

hello_hello
29th March 2019, 21:23
Maybe the players you've tried don't check the level? I don't know what they can check, how they do it, or what they'd usually do, but I'm pretty sure the default for the ffdshow DXVA decoder is to skip the level check (and it can be configured a little), so players mightn't necessarily check the level.

https://i.ibb.co/42b7NzY/ffdshow-dxva.gif (https://ibb.co/42b7NzY)

wigor1
29th March 2019, 21:26
Popcorn Hour A-210 (a hardware player connected to a TV) can play H.264 videos only up to Level 4.1.

So it can play 1920x1080 60p video if I force ffmpeg to set Level 4.1 for encoded video. And if I leave it by default, ffmpeg correctly sets Level 4.2 and this video can NOT be played on Popcorn Hour A-210.

I received complaints from an user of Popcorn Hour A-210 and he suggests me set wrong Level 4.1 for 1080 60p videos.

hello_hello
29th March 2019, 21:28
I guess it does check the level then..... :)

Asmodian
29th March 2019, 22:38
It is frustrating that the hardware can play 1080p60 but it rejects anything above level 4.1. It is probably because cannot handle the max bitrate of level 4.2.

Forcing level 4.1 is a decent work around, I suspect many devices that refuse to play 4.2 or higher have hardware that can successfully play lower bitrate 1080p60. I do hate recommending anyone create out of spec video but this case seems to require it and is also unlikely to do too much damage. :o