Notes on H.265 Hardware Encoding

I’m starting to run low on disk space on , with Time Machine and VM snapshots taking up almost half of it. So I decided to do some cleanups, and after moving some non-critical stuff to my (which I use as offline storage) I started looking at my video folder.

As it turns out, I have a fair chunk of old movie rips with H.264 encoding and 5.1 DTS audio. Those audio tracks slim down nicely into E-AC3 224KHz with minimal CPU encoding and video pass-through, but I decided to break out on both and my and check out the status quo of H.265 hardware encoding.

Some highly unscientific testing ensued, which involved setting up inside a Fedora LXC container that I use for ML tinkering, which has NVIDIA hardware access.

  • Inside that, I used the GNOME UI and set the encoding to H.265 NVENC
  • On the M2 Pro, I used the H.265 VideoToolbox encoder.

The first fun thing is that both transcoded 720p and 1080p over the network at rates that exceeded 200fps. The Mac even reached 300fps in sections, although to be fair I didn’t keep the Fedora session open all the time and just let it do its thing, and the difference in encoding speed might well be due to network throughput (although all machines are on gigabit Ethernet).

I didn’t have the time or patience to do some systematic benchmarking, but on either hardware this is a massive improvement over the time I last ripped a few DVDs, and drove me to poke at every original movie file I had and transcode it into sub-10GB files, complete with 5.1 audio and more than decent enough playback quality–which took only a fraction of an afternoon.

Tackling 4K content is something I didn’t really try (mostly because I had already ripped those in H.265, and I don’t own that many Blu-Rays), but running 4K iPhone footage through either NVENC or VideoToolbox without any quality tuning (and from the NAS, over gigabit Ethernet) clocked in at 70-90 fps transcoding, which is pretty good.

The second fun thing, though, is that the M2 Pro never warmed up significantly, throttled or went past 20W, whereas on borg the RTX3060 GPU alone reported 45W while transcoding (and the i7 CPU adds at least 65W on top of that).

So all in all, this was a pretty neat experiment, and I don’t think I’ll be bothered with using NVENC that much unless I buy another TV series on disc (which is what I wrote this container to handle).

This was the fun part, but in between this and other cleanups I am well on my way to get almost a full terabyte of storage back, which is a good enough outcome–although I will be budgeting for some capacity upgrades in a year or so, once 16TB drives are at a saner price point.

This page is referenced in: