Nearing the filling of my 14.5TB hard drive and wanting to wait a bit longer before shelling out for a 60TB raid array, I’ve been trying to replace as many x264 releases in my collection with x265 releases of equivalent quality. While popular movies are usually available in x265, less popular ones and TV shows usually have fewer x265 options available, with low quality MeGusta encodes often being the only x265 option.
While x265 playback is more demanding than x264 playback, its compatibility is much closer to x264 than the new x266 codec. Is there a reason many release groups still opt for x264 over x265?
A lot of TV shows are direct rips from streaming services and they don’t use H.265 because of the ridiculous licensing it comes with.
I suspect AV1 will become much more popular for streaming in a few years when the hardware support becomes more common. It’s an open source codec, so licensing shouldn’t be an issue. Then we will see a lot more AV1 releases.
What’s AV1 compression like compared to x265?
It’s comparable, sometimes better
In my experience, you always gain space savings going av1 from 264 and 265 as well. For me its always been significant savings at the same quality level.
Ofc YMMV and use a very recent ffmpeg with the best av1 libraries.
In my experience about ~8% better but 4x slower to transcode
Pretty big in my experience
x265 playback is more demanding than x264 playback
By a factor of 2 with the same bitrate. But you only need half the bitrate for the same quality (SNR) so it really isn’t.
However, encoding is about 10x more demanding in terms of bitrate, or 5x for the same quality. This may be worth it for long-term storage or wide distribution over limited bandwidth (torrenting), but not for one-time personal use.
For a Jellyfin server however it’s quite a boon.
Only if you’re disk limited or bandwidth limited. And in many cases will lead to transcoding the content, which could be a problem if you’re CPU limited or have no GPU for hardware transcoding.
Everything (not literally… but figuratively) can do x264. Not everything can do x265…
If your Jellyfin collection starts to grow big enough, and x264 transcoding on the fly is as easy as passing through the GPU these days…it’s pretty much a no brainer. You have small files, and if someone still needs x264 (which would need to be specifically a Firefox streamer, as I believe Chrome supports it, and the Jellyfin apps also support it if your computer/phone does), the transcoding on the fly can be done using about 1-2% of the server CPU. I did something like 12 simultaneous different transcodes once, and my oldish i5 9500T held its ground perfectly, I think it reached about 35% CPU at the peak of it.
9500T has quicksync. That’s why you’re transcodes were only 1-2% on the cpu. You were doing transcoding on the built in gpu.
It is NOT trivial to do transcode without hardware decoding. How much utilization was on your 630 iGPU in that scenario?
Well it’s a Jellyfin server. I bought a CPU that CAN transcode, for this specific purpose. Without hardware decoding, CPU usage scales quite quickly, but it could still hold 3-4 streams at 60fps I believe. At any rate, I bought this 2nd hand microPC with the specific purpose of being a Proxmox server with Jellyfin transcoding. And so, between having to consider further hard drive upgrades, or using the transcode function…I kinda choose the cheapest one since it’s at hand.
Congrats? I’m running my Plex server on enterprise hardware. There’s no onboard gpu for decoding because that’s not the purpose of that hardware. I do have a graphics card in there to do transcodes, and intimately monitor that usage. My original statement still holds. “which could be a problem if you’re CPU limited or have no GPU for hardware transcoding.”
Transcoding may not be that accessible/useful for some people. I’d rather waste some drive space than do transcodes for every user, but that’s because I have 400TB(not a typo) of space but don’t have enough space to put in any card that takes up more than 1pci slot. In my mind throwing another 20TB drive into my configuration is easier and cheaper than transcoding. In a couple of years we’re going to be having this discussion for AV1 anyway.
Edit: Oh, and 3-4 streams at 60fps, isn’t enough description… really doesn’t cover the most taxing part of the transcode process, which is resolution. 3-4 1080p streams is much easier than even 1-2 4k streams. Considering that content is trending towards higher resolutions rather than higher framerates, I’m not sure what you’re getting at. My T600 can do 3-4 4k streams before it starts running into problems. That should be something like 15-16 1080p streams. Considering my library, I’d still rather have the drives in a more accessible format that will direct play on more devices than transcode my 60-100mbps 4k videos. Keep the transcoding for those that really need it rather than making it the default answer.
Did you do something specific to play x265 on JellyFin? Last time I tried, the video kept crashing every 5-8minutes, even with a low bitrate threshold.
Which client? Works fine here
JellyFin App for Android TV (on a Shield)
There is an option to use an external player. So you could use VLC as an external player and use it. It would work better.
I tried that, but the result is the same (and progress doesn’t seem to be saved). Maybe it’s specific to the Shield or to my files
Hmmm what do you mean the video kept crashing? Where is your server set up? What are you using for OS? Is it bare metal, is it running in a Windows, in a VM, in a container?
In my case it’s running in a Proxmox LXC container (the container is running Ubuntu). I’m passing through the integrated GPU, as instructed in the Jellyfin docs. And then I enable Intel QSV transcoding on Jellyfin. The CPU consumption is close to negligible. Then again, you need an Intel CPU capable of x264 transcoding at decent rates. Anything after 8th gen should be able to do the trick (with this I mean, you can ALSO transcode whatever source to x265 on the fly, but that’s not a feature I’m actively using at the moment, as the resulting file is usually larger anyway). I’m using an i5 9500T, and I benchmarked something like 8 transcodes simultaneously to almost no impact. I think it was starting to be noticeable past 12 transcodes simultaneously. But that’s some heavy streaming there! That’d mean EVERYONE is connecting at once to your server using FF (I believe Chrome is x265 capable, and the apps also take x265 just fine if your phone/computer support it). So…in short, my i5 from a few generations ago is already overkill for x265
Go AV1… In my direct experience the space saving is simply amazing at the same quality.
265 doesn’t seems to be the future since all Android are going to support AV1 by mandatory from A14.
I recently started transcoding my media to save some space, and I went with h265 instead. AV1 will be great in a few years, but the hardware support is just not there yet.
Av1 would be great if everything supported playback, maybe soon. Tvs and chromecast with google tv 4k specifically. Somehow the 1080p one does
Will still be at least 10 years away sadly for it to be truly ubiquitous… Remember I couldn’t play x265 properly for quite a while.
I got an amazon fire stick, all the new ones support av1 and all android devices from A14 must support av1 too.
On PC vlc plays it just fine too.
It doesn’t play well on older kit though. Even the Nvidia Shield Pro won’t play them unless they’re really low resolution.
265 is ideal for me, even if it’s hamstrung on open source browsers.
RARBG was so good for this, their releases were of such good consistent quality
If you search for ORARBG on therarbg site you can still find some OG releases and not random YIFY crap
I just use qbitorrent and the search feature
Didn’t even know that was a thing ngl and I use qbit nox on my server. Kinda obsoletes the *arr suite
Eh, the *arr apps are more about the freedom to be hands-off. Ideally you will just request something in a frontend like Overseerr from your phone and it will handle the rest. Or automatically grab upon release.
I only found out shortly after the closure of RARBG. Found this is the best way to find old RARBG torrents, just search for whatever then filter for RARBG or 265
Not if you have lots of specific filters set up in the *Arr suite. So much better getting a HQ rip automatically than choosing a random one in qbit.
Some notes: Don’t use GPU to reencode you will lose quality.
Don’t worry for long encoding times, specially if the objective is long term storage.
Power consumption might be significant. I run mine what the sun shine and my photovoltaic picks up the tab.
And go AV1, open source and seems pretty committed to by the big players. Much more than h265.
Why is the GPU reencoding bad for the quality? Any source for this?
I have some comments based on personal experiences with GPU av1 encoding: you will always end up with either larger or worse output with GPU encoding because currently all the encoders have a frame deadline. It will only try for so long to build frame data. This is excellent when you are transcoding live. You can ensure that you hit generation framerate goals that way. If you disable the frame deadline, it’s much much slower.
Meanwhile CPU encoders don’t have this because CPU is almost never directly used in transcoding. And even with a frame deadline the output would still not be at the same speed as the GPU. However the CPU encoders will get frames as small as you ask for.
So if you need a fast transcode of anything, GPU is your friend. If you’re looking for the smallest highest quality for archival, CPU reference encoders are what’s needed.
Yeah that caught my eye too, seems odd. Most compression/encoding schemes benefit from a large dictionary but I don’t think it would be constrained by the sometimes lesser total RAM on a GPU than the main system - in most cases that would make the dictionary larger than the video file. I’m curious.
It’s not odd at all. It’s well known this is actually the truth. Ask any video editor in the professional field. You can search the Internet yourself. Better yet, do a test run with ffmpeg, the software that does encoding and decoding. It’s available to download by anyone as it’s open source.
Hardware accelerated processing is faster because it takes shortcuts. It’s handled by the dedicated hardware found in GPUs. By default, there are parameters out of your control that you cannot change allowing hardware accelerated video to be faster. These are defined at the firmware level of the GPU. This comes at the cost of quality and file size (larger) for faster processing and less power consumption. If quality is your concern, you never use a GPU. No matter which one you use (AMD AMF, Intel QSV or Nvidia NVENC/DEC/CUDA), you’re going to end up with a video that appears more blocky or grainy at the same bitrate. These are called “artifacts” and make videos look bad.
Software processing uses the CPU entirely. You have granular control over the entire process. There are preset parameters programmed if you don’t define them, but every single one of them can be overridden. Because it’s inherently limited by the power of your CPU, it’s slower and consumes more power.
I can go a lot more in depth but I’m choosing to stop here because this can comment can get absurdly long.
My understanding is that all of the codecs we are discussing are deterministic. If you have evidence to the contrary I’d love to see it.
GPU encoders like NVENC run their own algorithms that are optimized for graphics cards. The output it compatible with x265, but the encoder is not identical and there are far fewer options to tweak to optimize your video.
The output is orders of magnitude faster but (in my experience) objectively worse, introducing lots of artifacts
The evidence you want to see is literally something you can do or search the Internet yourself. There’s thousands of results. CPU is better than a GPU no matter codec you use. This hasn’t changed for decades. Here’s one of many direct from a software developer.
https://handbrake.fr/docs/en/latest/technical/performance.html
This. It sounds really odd to me that the GPU would make what is pretty much math calculations somehow “different” from what the CPU would do.
GPU encoders basically all run at the equivalent of “fast” or “veryfast” CPU encoder settings.
Most high quality, low size encodes are run at “slow” or “veryslow” or “placebo” CPU encoder settings, with a lot of the parameters that aren’t tunable on GPU encoders set to specific tunings depending on the content type.
NVENC has a slow preset:
As they expand the NVENC options that are exposed on the command line, is it getting closer to CPU-encoding level of quality?
So the GPU encoding isn’t using the GPU cores. It’s using separate fixed hardware. It supports way less operations than a CPU does. They’re not running the same code.
But even if you did compare GPU cores to CPU cores, they’re not the same. GPUs also have a different set of operations from a CPU, because they’re designed for different things. GPUs have a bunch of “cores” bundled under one control unit. They all do the exact same operation at the same time, and have significantly less capability beyond that. Code that diverges a lot, especially if there’s not an easy way to restructure data so all 32 cores under a control unit* branch the same way, can pretty easily not benefit from that capability.
As architectures get more complex, GPUs are adding things that there aren’t great analogues for in a CPU yet, and CPUs have more options to work with (smaller) sets of the same operation on multiple data points, but at the end of the day, the answer to your question is that they aren’t doing the same math, and because of the limitations of the kind of math GPUs are best at, no one is super incentivized to try to get a software solution that leverages GPU core acceleration.
*last I checked, that’s what a warp on nvidia cards was. It could change if there’s a reason to.
Every encoder does different math calculations. Different software and different software profiles do different math calculations too.
Decoding is deterministic. Encoding depends on the encoder.
The way it was explained to me once is that the asic in the gpu makes assumptions that are baked in to the chip. It made sense because they can’t reasonably “hardcode” for every possible variation of input the chip will get.
The great thing though is if you’re transcoding you can use the gpu to do the decoding part which will work fine and free up more cpu for the encoding half.
Already been explained a few times, but GPU encoders are hardware with fixed options, with some leeway in presets and such. They are specialized to handle a set of profiles.
They use methods which work well in the specialized hardware. They do not have the memory that a software encoder can use for example to comb through a large amount of frames, but they can specialize the encoding flow and hardware to the calculations. Hardware encoded can not do everything software encoders do, nor can they be as thorough because of constraints.
Even the decoders are like that, for example my player will crash trying to hardware decode AV1 encoded with super resolution frames, frames that have a lower resolution that are supposed to be upscale by the decoder. (a feature in AV1, that hardware decoder profiles do not support, afaik.)
GPU encoding means it’s using the encoder the GPU and driver provides. Which can be worse than software encoders. For software encoders they exist for encoding. On a GPU it’s one feature of many, and doesn’t necessarily seek out the same high bar.
Not really, I don’t do GPU encoding anyway so can’t say first person.
But everybody says so on all forums so maybe its true.
Yep, gpu de- and encoding is high-speed but often lower quality and with old codec versions. Common mistake to think that gpu = better.
In order to encode to a specific format without unintentionally losing quality, doesn’t the initial file have to be a remux?
Yes, that’s right. But the point stands, you indeed shouldn’t do such encoding on the GPU, it’s a tradeoff of (fast) speed vs (poor) quality and (big) size. Good for when you need realtime encoding.
Indeed, but YMMV and to me quality is still good if source was not a remix but a top quality encoding
You can downsample from BluRay, which would give you least loss.
But if you only have some good h264 version and want space savings, you can also reencode that, while probably loosing some small amount of quality, depending on your settings.
MeGusta and Im pretty sure all other x265 groups aren’t really considered official scene releases and usually the sources are the larger x264 scene releases. I’ve found that you can get the same if not better results as MeGusta encoding with a simple -cq 27 with the nvenc_h265 encoder which is reasonably fast.
A good portion of the world thats pirating media is playing it cheap junk with 10+ year old CPUs that can’t handle x265, most do not have terabytes of media they just watch and delete so overall size isnt a huge issue, most likely when a new codec does become more mainstream, it won’t actually mean smaller releases anyway, it will just mean better quality ones.
In the 00’s the standard everyone used was 800mb DivX because thats the size CD-Rs came in, over time, going into the 2010s we got x264 releases but the targets were around 4-8gb usually and by that point the size of optical media didn’t really matter since flash drives are cheap and reusable and overall internet speeds for people continues to increase as well so its more likely that when the day comes, the scene will probably coalesce around something like 8-16gb per release.
That’s why I grab the Chinese versions of stuff in the original language, they seem to not care about license and encode in h265 in the app
I’d be interested to know how many of the streaming services natively offer x265. If it’s not many, then I could understand why release groups wouldn’t wanna re encode (e.g. it wouldn’t be a true WEB-DL anymore)
Prob 0 % as h265 is like HDMI and needs to be licensed to be used. Sadly this has set up 265 to be a failure outside of piracy
It’s used for the majority of HDR streams and all Dolby Vision streams. h265 is the only codec that supports DV
Every 4K WEB-DL I see uses x265. It’s extremely popular by streaming services.
Should’ve mentioned I meant 1080p. x265 or something equivalent is essential for 4k
There’s always the chance that compatibility / breadth can be a factor. I don’t know how much more demanding 265 is than 264 but if it is “noticeable” / “enough”, if it means someone can’t play the content in their (smart) TV set or on their phone, it makes sense then to release for the more compatible option / avoid a dual release.
My old laptop can’t handle h265. I don’t think my old SmartTV can, either. We need h264 for those devices since they both have dedicated h264 decoding hardware.
Word! My daily driver phone is old enough that I think it can only handle like, h236 or something at most.
I had no idea about the differences with h264 / 265.
Interesting article to skim here for the uninitiated https://www.techspot.com/article/1131-hevc-h256-enconding-playback/
I only download h265 because my drive is filling up as well. I can usually play it back easily in software, except for film grain that wrecks the performance
I’ve just recently started using tdarr to convert all of my media to x265on 14/02 and so far I’ve saved 4.02 TB of what was 28.12TB media collection. (The number isn’t a true reflection though because new episodes and shows have been added to that library since I started)
I’m letting tdarr manage the conversion process and once up and running meant that my NAS, desktop, my NUC and a mini pc are all plodding through and converting when I’m not using them for other things.
If you are worried about the disk space being taken and have some CPU time you can devote to the conversion process then I’d suggest it’s worth looking into tdarr.
I’ve saved 4.02 TB of what was 28.12TB media collection.
How much kw and months did you use for that? 😮
I’m going to choose not to answer that for two reasons…
- I don’t know the answer
- solar panels and batteries are great.
But yes I’m in a position where I was more willing to pay for the power than I was to buy additional storage space as I’m hitting the top of what I can do without significant expense.
solar panels and batteries are great.
Agree. That’s why i want to place my mini-server on my dad’s farm, he has solar on the roof.
I’ve always wanted to do that, but how do you handle seeding?
Just keep it seeding?
Of course if you want both, best space saving would be to use the same file.
I have multiple servers, so it doesnt really matter anyways, one machine downloads and seeds via its SSD and theother is just for storage on HDDs. Though i could setup tiered storage in this scenario to be able to seed more with same SSD strorage amount.Ah, fair point. I don’t use torrents, my media comes from usenet, so that doesn’t need to factor into my thinking.
My (overly?) Complex setup does allow me to resort to torrents as a last resort, but that happens on another machine outside my home network and gets synchronised into my home via a one-way syncthing share, so even on the rare occasion I have to resort to torrents I can leave it on that server seeding for a few weeks or months.
I’ve done a bunch of transcoding of things to x265 in the past (as I’m sure everyone is aware transcoding isn’t GREAT but cuts down on storage costs). With that said I’ve now moved to AV1. I don’t use GPU encoders at all as I found the quality to be pretty terrible. I just use a custom written ZSH script to go through and check the current format (it also converts audio to OPUS too)
My raspberry pi doesnt transcode h265 very well at all. Much easier to expand the storage until I can upgrade to something better
deleted by creator
Oh my apologies, my pi doesnt handle it well on plex. Didnt realise it at the time and sorta just went with what was easiest to set up before realising I’d need to pay to get transcoding 😔
I stick to 264 for the same reason. I’m happy running Plex from my Pi4. Multiple streams are fine to devices around the home.
Also streams fine on my phone when external.
at least on a 4, this command will misleadingly return “disabled” even though your programs are able to use hwdec, because the h.265 decoder isn’t part of the Pi 4’s GPU, it’s elsewhere.
I don’t think the 5 has any hardware for encoding
nor decoding 264 :(
a rather annoying regression from the 4 to the 5, especially when the 5 now supports more MIPI cameras where live encoding is crucial.