Looking at the FFMPEG version in MCEBuddy, it says “N-95085-g525de95679”, which does not reveal much about the dates/versions of FFMPEG. It says built with gcc 20190918, but it is not clear if that’s the date of the GCC compiler used to build this version of FFMPEG or the date the FFMPEG was pulled from the git source repository and built.
I see that Gyan Doshi posts weekly builds that do include the NVENC and NVDEC encoders/decoders.
See here: Builds - CODEX FFMPEG @ gyan.dev
Handbrake appears to be version 1.3.3 with nVenc version 12.0.
The current version is 1.5.1. I don’t know if Handbrake includes the NVDEC decoder or just the NVENC encoder.
My question is can we drop-in replacement .exe files for FFMPEG and HandbrakeCLI that are more current versions?
If not, when can we expect these critical utilities will be upgraded to current versions in MCEBuddy?
Is it possible to leverage the GPU decoders for comskip?
We do test newer versions of the various tools. We have to test for stability and performance (and compatibility). Often newer versions have bugs or sometimes have poorer performance; for example, we have different builds of handbrake for Intel QSV conversions and for NVEnc conversions. Each testing cycles takes weeks for 24x7 testing across a lot of machines and 100,000’s of files before they’re certified for general use with MCEBuddy.
But for personal use, absolutely go ahead and do a drop in replacement, test it out and feel free to share your feedback.
Updated FFMPEG is something I am anxiously waiting for as well.
I am no longer using MCEBuddy to reencode my recordings because it does not handle the AC-4 audio used in ATSC 3.0. Instead it just have it copy and rename the files over and have Emby transcode them because Emby does have an updated FFMPEG that handles it. But I would really like to get back to using MCEBuddy since I have so much more configuration and control options with it.
Ffmpeg release versions don’t support ac-4 as yet. It’s still in dev but if you have the pre release dev builds you can always drop them in and use them with MCEBuddy.
The Emby builds are a FFMPEG 5 tree based build.
In transcode logs I see:
*01:56:01.333 ffmpeg version 5.1-emby_2022_10_11 Copyright (c) 2000-2022 the FFmpeg developers and softworkz for Emby LLC*
*01:56:01.334 built with gcc 10.3.0 (Rev5, Built by MSYS2 project)*
I did try dropping them and replacing the MCEBuddy builds but then the jobs would not execute. It has been a while but as I recall the command line that MCEBuddy was passing to FFMPEG just wasn’t getting it done.
I dropped in Handbrake-CLI v1.5.1 and so far, so good. No issues. Win10x64 22H2 (19045.2364) , i5-4430, RTX-2060.
It does seem like the GPU fans are running lower than full-on. GPU utilization seems to be 60-70%, maybe a tad lower? CPU utilization seems to be the same ~95% during encoding.
I haven’t run the same file through with both versions, but the same show on the same channel processed earlier with MCE Buddy and Handbrake 1.3.1 seems to have a lower chroma than the show processed with 1.5.1 when I played both side-by-side and synced up the video to see how they were different between the two handbrake versions.
I don’t know if the processing time is slower or faster between the versions of Handbrake. I’m transcoding to H.265 and AC3 into a MKV container.
Update on my (limited, 1 data point, Intel i5-Haswell, RTX2060) testing drop-in updates:
Handbrake CLI 1.6.1 - OK, from 1.3.3. Did not touch CLI-qsv (1.0.7), although 1.6.1 claims support, so qsv version not needed anymore?
MKVMerge and MKVExtract 74.0.0 - OK, from 17.0.0 (download portable and extract individual utilities)
AVIdemux 2.8.1 - OK, from 2.7.1 (app restructured, just kept plugins directory)
FFMPEG 6.0 stable released! Used gyan.dev builds.
> ffmpeg -version
ffmpeg version 6.0-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads
--disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls
--enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib
--enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2
--enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid
--enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation
--enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab
--enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm
--enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc
--enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libgme
--enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame
--enable-libtheora --enable-libvo-amrwbenc --enable-libgsm
--enable-libopencore-amrnb --enable-libopus --enable-libspeex
libavutil 58. 2.100 / 58. 2.100
libavcodec 60. 3.100 / 60. 3.100
libavformat 60. 3.100 / 60. 3.100
libavdevice 60. 1.100 / 60. 1.100
libavfilter 9. 3.100 / 9. 3.100
libswscale 7. 1.100 / 7. 1.100
libswresample 4. 10.100 / 4. 10.100
libpostproc 57. 1.100 / 57. 1.100
Comskip - 0.80.003. Current donator version is 0.82.012.
Not sure if it uses the external ffmpeg or has its own embedded version.
Hopefully, it will use the one provided by MCEBuddy.
Just a note on the drop of Handbrake 1.7 just posted to GitHub. Notably, the embedded FFMPEG will be v6.1, and support for AV1, including NVENC. Should be up officially in the next few days, already in the nightly builds.
See Github NEWS
- Added AMD VCN AV1 encoder
- Added NVIDIA NVENC AV1 encoder
- Added support for SVT-AV1 multi-pass ABR mode
- Added support for preserving ambient viewing enviroment metadata
- Added QSV Rotate and Format filters
- Improved performance on arm64 / aarch64 / Apple Silicon architectures
- Latest FFmpeg provides faster HEVC decoding, 30% faster bwdif filter
- New SVT-AV1 assembly optimizations provide up to 4x increase in performance
- Improved video conversion speed by removing unneeded frame copies for better memory efficiency
- Improved Dolby Vision dynamic range metadata pass through
- Supported encoders: x265 10-bit
- Supported profiles and cross-compatibility IDs: 8.4, 8.1, 7.6 (base layer only, converted to 8.1), 5.0
- Improved HDR10+ dynamic range metadata pass through
- Supported encoders: x265 10-bit, SVT-AV1
- Improved QSV support on Linux (#4958)
- Updated NVENC to not use multi-pass by default; user configurable advanced option
- Renamed 2-pass encode option to multi-pass (#5019)
- Fixed Intel QSV encoder outputting green video in some cases (#4842, #4876)
- Fixed pixel format conversion slightly altering colors when using a 10-bit hardware encoder (#5011)
- Fixed scan failures by using swscale instead of zscale when source resolution is not mod 2
- Fixed incorrect PAR when reading from an anamorphic AV1 video track
- Removed an artificial bitrate limit on VP9 CQ mode
Command line interface
- Fixed automatic cropping enabled despite using preset with cropping disabled (#5055)
- Fixed low volume level when downmixing ac3 and eac3
- Fixed left-only and right-only mono mixdowns (#3533, #5054)
- Fixed locale settings potentially causing incorrect decimal separator in SSA headers
- Fixed a potential issue affecting zero-duration subtitles
- Added Meson build system for the Linux GUI
- New libraries
- libdovi 3.2.0 (Dolby Vision dynamic range metadata)
- Updated libraries
- AMF 1.4.30 (AMD VCN video encoding)
- FFmpeg 6.1 (decoding and filters)
- FreeType 2.13.2 (subtitles)
- Fribidi 1.0.13 (subtitles)
- HarfBuzz 8.2.2 (subtitles)
- libass 0.17.1 (subtitles)
- libdav1d 1.3.0 (AV1 video decoding)
- liblzma (xz) 5.4.5 (LZMA video decoding, e.g. TIFF)
- libopus 1.4 (Opus audio encoding)
- libjpeg-turbo 3.0.1 (preview image compression)
- libvpx 1.13.1 (VP8/VP9 video encoding)
- libxml 2.11.5 (general)
- oneVPL 2023.3.1 (Intel QSV video encoding/decoding)
- SVT-AV1 1.7 (AV1 video encoding)
- x264 164 r3107 (H.264/AVC video encoding)
- x265 r12776 (H.265/HEVC video encoding)
- zimg 3.0.5 (color conversion)
- zlib 1.3 (general)
Notable in the above is the inclusion of NVENC SV1 (nVidia hardware encoding to SV1).
This is now in the Handbrake nightly builds, and Handbrake 1.7.0 should be dropping shortly.
However, NVENC SV1 GPU encoding is only available on the new Ada (RTX40 series) cards.
It is unknown if nVidia will backport the encoder to the RTX10 series (Pascal), RTX20 series (Turing), or RTX30 series (Ampere) cards. I don’t have a RTX40 series card, so I don’t see the option.
If I do get a RTX40 series card, that will be the tipping point for me to switch from x265.
The open codec audio equivalent to SV1 is Opus. Unfortunately, there is little support (so far) in devices for the codec, and significant entrenched media and support for IP-encumbered codecs like AAC, AC3, E-AC3, and Dolby 5.1.
So for now, my future media encoding looks like SV1 and AAC.