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