Hi All,

I have a perplexing question I am seeking answers to.  Note that this DOES 
concern BOTH Windows and Linux, I'll start off with Windows.

So as I mentioned in my talk on security cams the Reolink cam I passed around 
outputs video over the network.  There are 2 streams it makes available, a 
primary stream and a substream.

The primary stream is the full resolution of the camera and it outputs in 
H.265.  The substream is a much more limited resolution of the camera and it 
outputs in H.264

Normally the way you configure the NVR is to do all the motion analysis and 
triggering on the substream, because it is not compressed and since it's lower 
resolution this is much less taxing on the CPU of the NVR since it does not 
have to decompress every frame just to do motion detection analysis on it.   
Then you set a trigger on the main stream so the NVR only records the main 
stream when there's motion.  Basically the NVR just throws the H.265 video 
directly to the hard disk, no analysis.

This of course creates a bunch of H.265 archival event *.mp4 files on the hard 
disk of the NVR should you ever have to go back and review video.

Now, under a fresh install of Windows 10 build 22H2 , what I have discovered is 
that with a brand new Windows 10 installation on a PC that has a pre-Kaby Lake 
CPU, (pre Kaby Lake CPUs do not have a hardware H.265 codec in them) all 3 of 
the major web browsers - Chrome, Edge, and Firefox, will NOT show the video 
files, and will throw a message about codec being unavailable.  In addition, 
Windows Media Player will not play it either.  Nor will the latest "Media 
Player" player (there is a version of Media Player which is the player that 
replaced Groove Music in Windows 11 that works on Windows 10 that Microsoft 
accidentally let slip out)

If you go to the Microsoft Windows Store, and you download a 99 cent HEVC codec 
from Microsoft, titled HEVC Video Extensions, then Edge will now play the 
videos as well as the old Windows Medial Player and the new Media Player.

(I am aware that VLC and Klite codec with Windows Media Player Classic contain 
open source HEVC decoders that nobody has paid a patent fee to MPEG-LA to that 
will play these videos but I'm not going to go there at the moment.

Under a brand new installation of Windows 11 build 22H2 on a Kaby Lake CPU or 
later (such as my laptop which has a Core i5-8365U CPU in it) _BOTH_ Edge and 
Chrome _will_ display H.265 encoded videos WITHOUT the 99 cent HEVC video 
extensions app from Microsoft, and without any other HEVC extension.

In the past, Microsoft included this thing called "HEVC Video Extensions for 
Device Manufacturer" in older Windows 10 builds.  Allegedly, during windows 
installation if it detected a Kaby Lake CPU it would install this.  However, it 
appears that later versions of Edge broke compatibility with that although the 
Windows Media Player did work with it on Kaby Lake.  THIS EXTENSION IS _NOT_ 
INSTALLED on a fresh Windows 11 build 22H2 on a Kaby Lake CPU.

When I had Windows 10 on my Kaby Lake CPU laptop, either with or without the 
HEVC extensions, Chrome refused to display H.265 videos.

Under the latest version of Ubuntu, running on a pre-Kaby Lake CPU, Firefox 
will NOT display H.265 videos which is what I expected.

However, there is a version of Chrome/Chromium that appears to be compiled with 
a software H.265 decoder in it located at 
https://github.com/StaZhu/enable-chromium-hevc-hardware-decoding/releases that 
DOES play HEVC videos on Ubuntu on systems that have a pre Kaby Lake CPU.

So, what I am trying to find out is the following:


  1.  Is it possible to get Firefox to display HEVC videos?  Everything I have 
read indicates the Mozilla developers have some religious war thing going on 
with MPEG-LA and refuse to put support into Firefox for it - EVEN WHEN the 
underlying CPU is Kaby Lake, with the hardware codec.  They seem to think that 
they can push VP9 or AV1 codecs but the problem is vp9 is not as efficient as 
HEVC and none of the cheaper security cameras seem to output in this format 
anyway - they all output in HEVC.  I assume some of the cost of the camera is a 
patent fee paid to MPEG-LA
  2.  Obviously, the compiled version of Chromium with the software HEVC 
decoder in it has not yet come to the attention of the MPEG-LA's lawyers who 
have not yet filed a takedown request on it (I am not going to get involved in 
discussing that patent mess - it's well documented on the Internet if you care 
to look for it)  It's built on the open-source Chrome code.  I don't know, of 
course, if it's code will actually use a hardware decoder if one is present or 
not, but I KNOW it's decoder must have a software codec in it since it runs on 
hardware with an Intel Core i5-4570 CPU (which is definitely pre-Kaby Lake)

I have read that it should be possible for anyone to download Chrome and 
compile it with the h265 codec enabled since apparently Chrome's developers 
distribute that in the source?? But I have not personally done this myself.  I 
probably will end up doing this because I am a tiny bit leery of the Sta Zhu 
compilation since when I ran the windows version of that as a test, after a 
while Windows Defender popped a message up saying that the web browser was 
attempting to contact some server on the Internet and did I want to allow it?

There is also a standalone player that is supposed to run as a plugin to Chrome 
here:
https://chrome.google.com/webstore/detail/h265-hevc-player/dambgipgbnhmnkdolkljibpcbocimnpd
that supposedly runs under Linux.  I have tried this with Chrome under Windows 
and it does NOT work.  At least, not under a pre Kaby-Lake CPU.

Yes, it's possible to download HEVC videos from the NVR to a regular .mp4 file 
and play them under Ubuntu with VLC.  But that's kludgier for the end user than 
just having them play in a window in the browser.

Yes it's probably possible to configure the NVR to transcode the incoming H.265 
stream to something else.  But, that's going to reduce total video storage 
since every codec out there that can keep up with even a lowly 5 fps is worse 
than HEVC in terms of the size of the resulting file produced.  And the AV1 
codec, even though it definitely will produce smaller encoded files, is slow as 
molasses and CANNOT keep up with even 5 fps from one of these cameras.

The AV1 hardware codec IS appearing in some of the newest CPUs particularly 
CPUs on phones.  Possibly one day it might be possible to transcode an incoming 
HEVC stream from a camera to AV1 and get even more space savings.  But that's 
years off.  And only when the majors like Netflix and the TV manufacturers 
switch over to that codec are we going to see wide use of it.  For now, HEVC 
codec offers the fastest decoding/encoding with the smallest filesize and the 
largest amount of compatibility even though the patent situation is a mess.  I 
did see that MPEG-LA finally did put a cap on royalty payments so the biggest 
objections of companies like Reolink to using it are gone now, but Microsoft 
still dings you the 99 cents for their plugin as a result of that, although you 
don't need their plugin if you have newer hardware and newer Windows so that 
seems fair I guess.

For anyone I setup one of these cameras for if they are using Windows and have 
a pre Kaby Lake CPU running it, can tell them to just buy the 99 cent Microsoft 
codec

But for using Linux as a ZoneMinder console - there does not seem to be any 
good choices.  The "instructions" I have found for getting it to work under 
Chrome on Linux don't work, and even if they did they would spawn the player in 
a separate window, not in the browser, only the Sta Zhu compilation seems to 
work properly.  Chrome and Firefox under Ubuntu appear to completely ignore 
system-installed codecs which is the same situation under Windows - you cannot 
install a free Codec pack like K-Lite and have any of the Big 3 browsers pay 
any attention at all to it.

Anyway, if anyone can confirm all of this and have any suggestions I'd be 
interested.  Just about everything I've dug up on the internet is out of date 
and not applicable.

Ted

Reply via email to