You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Chrome has recently introduced support for HEVC codec via MSE in Windows and Mac desktop builds as long as underlying OS / GPU can decode it. Can be seen since Chrome 104 when querying chrome://gpu (some reports claim 107 as the stable version where it will be enabled for everybody) . If it states "Decode hevc main" in its "Video Acceleration Information" section, standard HEVC should be usable on that system. But only in its clear form or allegedly with clearkey encryption, Widevine DRM is not supported yet as can be seen in the CDMs tab of chrome://media-internals. And here is the issue...
This test stream is CENC-encrypted with Widevine and PlayReady having both HEVC and vp9 codecs for its UHD video track.
Previously HEVC in mpeg-dash was filtered out on desktop Chrome and everything was working fine with vp9. It still is in Firefox and Opera because those do not support HEVC yet the way Chrome does, Edge can support HEVC but it requires a system plugin. HEVC is now considered usable by the player on Chrome even with Widevine DRM and it breaks playback on videojs/http streaming/contrib-eme based players.
I am posting this in a contrib-eme thread because as I see it, the navigator.requestMediaKeySystemAccess() method checks only for videoCapabilities of vp9 codec but not HEVC codec. Since this promise is fulfilled, playback starts and it can be then seen in browser's network log and player's debug log that the player later adapts to segments of HEVC encoded content even though it first started with vp9 encoded segments because they have slightly lower bitrate. This obviously stalls the playback as HEVC segments cannot be decrypted.
This switching between codecs is not exactly part of the problem (even though the dash manifest does not include <SupplementalProperty schemeIdUri="urn:mpeg:dash:adaptation-set-switching:2016" value="***" /> to enable codec switching between adaptation sets). The browser did after all respond to codec query that it can support HEVC. The problem is that only navigator.requestMediaKeySystemAccess() called for all included codecs in a stream (which is not happening at the beginning) would reveal that DRM is unusable for one of them and the player then should filter it out, hence why I am sharing the findings here.
What is your opinion, please?
The text was updated successfully, but these errors were encountered:
Yeah, this library should either hardcode a case for this (a quickfix) but otherwise, I think it'll need brushing off #98 and completing it. Currently, there's a lot of assumptions and there isn't really capability detection done which is what #98 provides.
Chrome has recently introduced support for HEVC codec via MSE in Windows and Mac desktop builds as long as underlying OS / GPU can decode it. Can be seen since Chrome 104 when querying
chrome://gpu
(some reports claim 107 as the stable version where it will be enabled for everybody) . If it states "Decode hevc main" in its "Video Acceleration Information" section, standard HEVC should be usable on that system. But only in its clear form or allegedly with clearkey encryption, Widevine DRM is not supported yet as can be seen in the CDMs tab ofchrome://media-internals
. And here is the issue...This test stream is CENC-encrypted with Widevine and PlayReady having both HEVC and vp9 codecs for its UHD video track.
https://videojs-http-streaming.netlify.app/?debug=true&autoplay=false&muted=false&fluid=false&minified=false&sync-workers=false&liveui=true&llhls=false&url=https%3A%2F%2F1798253129.ssl.cdn.cra.cz%2FUHD%2Ffull%2Fuhddrm.ism%2F.mpd%3Ffilter%3D!(FourCC%3D%3D%2522AVC1%2522)&type=application%2Fdash%2Bxml&keysystems=%7B%0A%20%20%22com.widevine.alpha%22%3A%20%7B%0A%20%20%20%20%22url%22%3A%20%22https%3A%2F%2Fdrm-widevine-licensing.axtest.net%2FAcquireLicense%3Faxdrmmessage%3DeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb21fa2V5X2lkIjoiNjVGM0JCNjItQUUwMS00MThGLUFCNkUtRTlBNTgwOUU3MEIxIiwibWVzc2FnZSI6eyJjb250ZW50X2tleV91c2FnZV9wb2xpY2llcyI6W3sibmFtZSI6InVoZHNlYyIsInBsYXlyZWFkeSI6eyJtaW5fZGV2aWNlX3NlY3VyaXR5X2xldmVsIjoyMDAwLCJkaWdpdGFsX3ZpZGVvX291dHB1dF9wcm90ZWN0aW9ucyI6W3siY29uZmlnX2RhdGEiOiJBQUFBQVE9PSIsImlkIjoiQUJCMkM2RjEtRTY2My00NjI1LUE5NDUtOTcyRDE3QjIzMUU3In1dLCJhbmFsb2dfdmlkZW9fb3V0cHV0X3Byb3RlY3Rpb25zIjpbeyJjb25maWdfZGF0YSI6IkFBQUFBUT09IiwiaWQiOiI3NjBBRTc1NS02ODJBLTQxRTAtQjFCMy1EQ0RGODM2QTczMDYifV0sImFuYWxvZ192aWRlb19vcGwiOjIwMSwiY29tcHJlc3NlZF9kaWdpdGFsX3ZpZGVvX29wbCI6NTAwLCJ1bmNvbXByZXNzZWRfZGlnaXRhbF92aWRlb19vcGwiOjMwMH0sIndpZGV2aW5lIjp7ImRldmljZV9zZWN1cml0eV9sZXZlbCI6IlNXX1NFQ1VSRV9ERUNPREUifX0seyJwbGF5cmVhZHkiOnsibWluX2RldmljZV9zZWN1cml0eV9sZXZlbCI6MjAwMH0sIm5hbWUiOiJhdWRpbyIsIndpZGV2aW5lIjp7ImRldmljZV9zZWN1cml0eV9sZXZlbCI6IlNXX1NFQ1VSRV9DUllQVE8ifX1dLCJ2ZXJzaW9uIjoyLCJ0eXBlIjoiZW50aXRsZW1lbnRfbWVzc2FnZSIsImNvbnRlbnRfa2V5c19zb3VyY2UiOnsiaW5saW5lIjpbeyJ1c2FnZV9wb2xpY3kiOiJ1aGRzZWMiLCJpZCI6IjY4YjA2NTI4LTdlNDQtNDY1OS04ZTU4LWE3MjBmNTNiOTQ4NSIsIml2IjoiUTZHU2JkNS9UT2FJaWVhYm1XQkY1Zz09In0seyJ1c2FnZV9wb2xpY3kiOiJhdWRpbyIsImlkIjoiZmYxNGZjOWMtYjhjNy02MDY3LWNkNGMtYWNmMjk0MzY1ODVhIiwiaXYiOiJta1EwNmxDRXRuOWJFS2Erc0lKTFBnPT0ifV19LCJsaWNlbnNlIjp7ImR1cmF0aW9uIjo2MDQ4MDAsIndpZGV2aW5lIjp7ImluY2x1ZGVfYWxsX2VudGl0bGVkX2tleXMiOnRydWV9fX0sInZlcnNpb24iOjF9.O26-g9klPaN1pPl0GPnxGMiLLiPgL2Q789zsSYYpAAk%22%0A%20%20%7D%0A%7D&buffer-water=false&exact-manifest-timings=false&pixel-diff-selector=false&network-info=false&dts-offset=false&override-native=true&preload=auto&mirror-source=true
Previously HEVC in mpeg-dash was filtered out on desktop Chrome and everything was working fine with vp9. It still is in Firefox and Opera because those do not support HEVC yet the way Chrome does, Edge can support HEVC but it requires a system plugin. HEVC is now considered usable by the player on Chrome even with Widevine DRM and it breaks playback on videojs/http streaming/contrib-eme based players.
I am posting this in a contrib-eme thread because as I see it, the
navigator.requestMediaKeySystemAccess()
method checks only forvideoCapabilities
of vp9 codec but not HEVC codec. Since this promise is fulfilled, playback starts and it can be then seen in browser's network log and player's debug log that the player later adapts to segments of HEVC encoded content even though it first started with vp9 encoded segments because they have slightly lower bitrate. This obviously stalls the playback as HEVC segments cannot be decrypted.This switching between codecs is not exactly part of the problem (even though the dash manifest does not include
<SupplementalProperty schemeIdUri="urn:mpeg:dash:adaptation-set-switching:2016" value="***" />
to enable codec switching between adaptation sets). The browser did after all respond to codec query that it can support HEVC. The problem is that onlynavigator.requestMediaKeySystemAccess()
called for all included codecs in a stream (which is not happening at the beginning) would reveal that DRM is unusable for one of them and the player then should filter it out, hence why I am sharing the findings here.What is your opinion, please?
The text was updated successfully, but these errors were encountered: