Skip to content

HwCodecDetect is a lightweight command-line tool that reports on your device's available hardware-accelerated video codecs. It quickly identifies a system's encoding and decoding capabilities for standards like H.264, H.265 (HEVC), and AV1, providing essential information for users.

License

Notifications You must be signed in to change notification settings

whyb/HwCodecDetect

Repository files navigation

FFmpeg Hardware Codec Test Script(HwCodecDetect)

中文版

Today's hardware-accelerated video codec landscape is a "field of a hundred schools of thought." To leverage the immense power of GPUs, hardware manufacturers have introduced their own acceleration frameworks and encoding standards, such as NVIDIA's NVEnc/NVDec, Intel's QSV, and AMD's AMF. Additionally, operating systems provide universal APIs like Microsoft's Media Foundation, DXVA2, and D3D12VA, while the open-source community has developed cross-platform standards like VAAPI and Vulkan.

While this diversity drives technological progress, it also presents a challenge for users and developers. Due to historical issues and compatibility quirks, a single piece of hardware might support multiple encoders, but they can differ significantly in performance, supported formats, and resolutions. As a result, when using FFmpeg for hardware acceleration, it's not always clear which encoder is best suited for a specific device.

This project was created to solve this very problem. It's a convenient tool for automatically detecting the hardware video encoder capabilities of your system. Using FFmpeg, it generates single-frame video files at various resolutions (from 240p to 8K) and attempts to process them with different hardware encoders. This allows it to quickly determine which hardware encoders are available on your system and what resolutions they support.

Key Features

Encoders

The script automatically tests and reports on the following major hardware encoders and their supported formats:

Encoder Name Supported Video Formats
NVEnc H.264、H.265、AV1
QSV (Quick Sync Video) H.264、H.265、AV1、MJPEG、MPEG-2、VP9
AMF (Advanced Media Framework) H.264、H.265、AV1
Media Foundation H.264、H.265
D3D12VA (Direct3D 12 Video Acceleration) H.265
VAAPI (Video Acceleration API) H.264、H.265、AV1、MJPEG、MPEG-2、VP8、VP9
Vulkan H.264、H.265
Apple VideoToolbox H.264、H.265

Decoders

The script automatically tests and reports on the following major hardware decoders and their supported formats:

Decoder Name Supported Video Formats
NVDec (CUVID) H.264、H.265、AV1、MJPEG、MPEG-1、MPEG-2、MPEG-4、VP8、VP9
QSV (Quick Sync Video) H.264、H.265、AV1、MJPEG、MPEG-2、VP8、VP9
AMF (Advanced Media Framework) H.264、H.265、AV1
DXVA2 (DirectX Video Acceleration) H.264、H.265、MJPEG、MPEG-1、MPEG-2、MPEG-4、VP8
D3D11VA (Direct3D 11 Video Acceleration) H.264、H.265、AV1、MJPEG、MPEG-1、MPEG-2、MPEG-4、VP8、VP9
Vulkan H.264、H.265、AV1
Apple VideoToolbox H.264、H.265、MPEG-2、MPEG-4

How to Use

You can install and use HwCodecDetect in two ways.

Method 1: Install via PyPI (Recommended)

This is the easiest method if you just want to use the tool quickly.

  1. Install: Use pip to install HwCodecDetect from the official PyPI repository.

    pip install HwCodecDetect
  2. Run: After installation, run the HwCodecDetect command directly from your terminal.

    HwCodecDetect

Method 2: Install from Source

Use this method if you have cloned the project source code from GitHub and want to run it locally.

  1. Clone the repository: First, clone the project source code to your local machine.

    git clone https://github.com/whyb/HwCodecDetect.git
  2. Install dependencies: Navigate into the project's root directory and use pip to install the required dependencies.

    cd HwCodecDetect
    pip install .
  3. Run: After the installation is complete, run the HwCodecDetect command directly.

    HwCodecDetect

Demo

Here are some possible results from a local test run: test result

About

HwCodecDetect is a lightweight command-line tool that reports on your device's available hardware-accelerated video codecs. It quickly identifies a system's encoding and decoding capabilities for standards like H.264, H.265 (HEVC), and AV1, providing essential information for users.

Resources

License

Stars

Watchers

Forks

Packages

No packages published