lisamelton / video_transcoding

Tools to transcode, inspect and convert videos.
MIT License
2.39k stars 160 forks source link

Question: What are the risks in using H.265? #229

Closed hisaac closed 6 years ago

hisaac commented 6 years ago

I see video_transcoding supports H.265 conversion, but that it's labeled as experimental. Could you explain the risks in using H.265? Is it too early to start using it?

khaosx commented 6 years ago

@hisaac - I've had some good luck with H.265, but in my opinion, it's not ready for prime time yet. While there aren't any risks, I can tell you some of the downsides from my experience.

tl;dr? - Stay away for at least another year, unless you're starting from scratch on your transcoding journey, you've verified that ALL your targets playback H.265, and you have a beast of a transcoding box. Your mileage may vary, but this is the direction I'm taking for now...

hisaac commented 6 years ago

Thanks @khaosx! This is very helpful info. I think I'll take your advice and hold off for now.

lisamelton commented 6 years ago

@hisaac This is a great question and @khaosx gave a great answer. I agree with all of that. Thanks!

The HEVC (or H.265) format is very possibly the future of video transcoding. Although there's also the possibility that AV1 will wind up replacing H.264. We just don't know yet.

But while HEVC may be the future, IMO it's definitely not the present. :) At least for home transcoders like us.

While there are now some commercial software and hardware HEVC codecs, using HandBrake our choice is limited to x265. I think the x265 development team has made tremendous progress with performance and quality. But there are still issues.

As @khaosx wrote, using x265 is slow. More than twice as slow as using x264, the last time I checked. And I haven't been able to develop a --quick option for x265 yet which speeds things up and still maintains quality.

And as to quality, there are still a few problems with x265 even when using its default settings. I know of at least one very grainy scene in a movie where x265 produces significant blockiness and artifacts.

Plus, my special, or default, ratecontrol system in transcode-video is not tuned for x265. It works, but I'm sure I could improve it if I had the time and high-powered hardware to iterate on it.

And @khaosx is completely spot on with his concerns about playback. Only the latest, high-end devices can handle HEVC.

If you do decide to experiment with HEVC transcoding, my advice is to use my ABR ratecontrol system (via the --abr option) and the 10-bit version of the x265 codec (via --handbrake-option encoder=x265_10bit).

hisaac commented 6 years ago

Sounds good @donmelton, thank you for the technical breakdown and extra advice.