FastFlix icon indicating copy to clipboard operation
FastFlix copied to clipboard

Detect and Use FFmpeg's QSV/NVENC/AMF Encoders

Open jpyper opened this issue 6 months ago • 1 comments

I am reposting my Discussion post as an Issue now with some slight modifications. I utilized the Discussion tab. My post, #645 has gone ignored for over 2 months. Nobody reads the Discussion tab on GitHub projects. That's where posts go to pasture. :-/

I use rigaya's QSVEncC encoder only with FastFlix. I figured it might be a useful to keep everything in one place and make available FFmpeg's hardware encoders, if they are compiled in and detected. One command line for everything to simplify all encoding needs. Keep the option to use rigaya's encoders in the Settings menu if the user wants to use them as well. More is better, right? Just food for thought.

Basic System Info: OS: Arch Linux x86_64 Kernel: Linux 6.15.2-arch1-1 CPU: AMD Ryzen 9 5950X (32) @ 5.09 GHz Memory: 19.85 GiB / 62.69 GiB (32%) GPU: Intel Arc A380 @ 2.45 GHz [Discrete]

Some FFmpeg output: john@host ~ :> ffmpeg -version ffmpeg version n7.1.1 Copyright (c) 2000-2025 the FFmpeg developers built with gcc 15.1.1 (GCC) 20250425 ✂ cut about 20 lines of compiled with options and libraries ✂

john@host ~  :> ffmpeg -hide_banner -encoders | grep -i qsv
V..... av1_qsv AV1 (Intel Quick Sync Video acceleration) (codec av1) V..... h264_qsv H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel Quick Sync Video acceleration) (codec h264) V..... hevc_qsv HEVC (Intel Quick Sync Video acceleration) (codec hevc) V..... mjpeg_qsv MJPEG (Intel Quick Sync Video acceleration) (codec mjpeg) V..... mpeg2_qsv MPEG-2 video (Intel Quick Sync Video acceleration) (codec mpeg2video) V..... vp9_qsv VP9 video (Intel Quick Sync Video acceleration) (codec vp9)

john@host ~ :> ffmpeg -hide_banner -encoders | grep -i nvenc V....D av1_nvenc NVIDIA NVENC av1 encoder (codec av1) V....D h264_nvenc NVIDIA NVENC H.264 encoder (codec h264) V....D hevc_nvenc NVIDIA NVENC hevc encoder (codec hevc)

john@host ~ :> ffmpeg -hide_banner -encoders | grep -i amf
V....D av1_amf AMD AMF AV1 encoder (codec av1) V....D h264_amf AMD AMF H.264 Encoder (codec h264) V....D hevc_amf AMD AMF HEVC encoder (codec hevc)

This is on a fresh install of vanilla Arch Linux as of about 2 hours ago. I don't have a Debian/Ubuntu system or any other system to test against, but Arch is well known where when you build it, it MIGHT run. Well, I guess they are off to a pretty good start by compiling in to their release of FFmpeg the basics for utilizing hardware encoding.

So, do you think you can add all available FFmpeg hardware encoders? It does show FFmpeg NVENC HEVC, which I think is forced for some reason, in the menu of available encoders, even though I do not use or own an Nvidia GPU card.

jpyper avatar Jun 18 '25 19:06 jpyper

Windows counterpart commandline: ffmpeg -hide_banner -encoders | findstr /i "<argument>"

Anyway I always prefer to use @rigaya's *Encs for hardware encodings instead.

MarcoRavich avatar Oct 27 '25 12:10 MarcoRavich