A C++ wrapper for FFmpeg that simplifies multimedia processing with modern C++ abstractions.
AvCpp is a C++ wrapper library for FFmpeg that provides modern C++ abstractions over FFmpeg's C APIs. It simplifies multimedia processing tasks such as encoding, decoding, muxing, demuxing, and filtering by offering type-safe classes and utilities. The library bridges the gap between FFmpeg's low-level C interface and modern C++ development practices.
C++ developers working with multimedia applications who need to leverage FFmpeg's capabilities but prefer a modern, type-safe C++ interface. It's suitable for projects involving video/audio processing, codec integration, or custom media pipelines.
Developers choose AvCpp because it reduces the complexity and boilerplate of using FFmpeg directly, offering a clean, object-oriented API that integrates seamlessly with CMake-based projects. Its modular design allows selective inclusion of FFmpeg components, and it supports both static and shared library builds.
C++ wrapper for FFmpeg
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Wraps FFmpeg's C APIs into type-safe classes like av::AudioSample and av::VideoFrame, reducing boilerplate and manual memory management errors, as shown in the core helper classes section.
Supports key FFmpeg functionality including codecs, containers, filters, and resampling, with modular CMake directives to enable or disable components like libavformat and libavfilter for flexible builds.
Easily integrates into CMake projects via Git submodule, FetchContent, or vcpkg, with detailed configuration options in the README for custom library paths and installation prefixes.
Includes examples and tests enabled by default in CMake builds (AV_BUILD_EXAMPLES and AV_BUILD_TESTS), providing practical usage references for developers.
The Meson build system is explicitly noted as 'broken for the last code' and excluded from CI, forcing reliance on CMake and limiting build system flexibility.
Requires FFmpeg >=4.0 with specific library versions, and setup on older Linux distributions like Ubuntu 18.04 involves adding external PPAs, which can be error-prone and platform-specific.
Build verification is only done for specific Ubuntu versions (e.g., 22.04 in GitHub Actions), with no guarantees for Debian, Windows, or macOS, risking compatibility issues.
The README primarily covers build instructions, and full documentation is hosted externally; this may be insufficient for advanced usage without prior FFmpeg expertise.