# Rust wrapper for FFmpeg libraries [![Crates.io][crates-badge]][crates-url] [![MIT licensed][license-badge]][license-url] [![Build Status][build-badge]][build-url] [crates-badge]: https://img.shields.io/crates/v/ac-ffmpeg [crates-url]: https://crates.io/crates/ac-ffmpeg [license-badge]: https://img.shields.io/crates/l/ac-ffmpeg [license-url]: https://github.com/angelcam/rust-ac-ffmpeg/blob/master/LICENSE [build-badge]: https://travis-ci.org/angelcam/rust-ac-ffmpeg.svg?branch=master [build-url]: https://travis-ci.org/angelcam/rust-ac-ffmpeg This library provides a Rust interface for FFmpeg libraries. Rather than supporting all FFmpeg features, we focus on safety and simplicity of the interface. ## Supported features * Demuxing any self-contained media container * Muxing any self-contained media container * Setting metadata * Seeking * Decoding audio and video * Encoding audio and video * Video frame scaling and pixel format transformations * Audio resampling * Bitstream filters ## Requirements * FFmpeg v4.x or v5.x libraries. The following libraries are required: * libavutil * libavcodec * libavformat * libswresample * libswscale ## Compilation The following env. variables can be used to set correct paths to FFmpeg header files and libraries: * `FFMPEG_INCLUDE_DIR` - path to the FFmpeg header files * `FFMPEG_LIB_DIR` - path to the FFmpeg libs If you require building for multiple platforms, you can append `_PLATFORM_TARGET_TRIPLET` to both of the above to create platform specific env. variables, for example: * `FFMPEG_INCLUDE_DIR_AARCH64_LINUX_ANDROID = ${jniInclude}/arm64-v8a/` * `FFMPEG_LIB_DIR_AARCH64_LINUX_ANDROID = ${jniLibs}/arm64-v8a/` * `FFMPEG_INCLUDE_DIR_X86_64_LINUX_ANDROID = ${jniInclude}/x86_64/` * `FFMPEG_LIB_DIR_X86_64_LINUX_ANDROID = ${jniLibs}/x86_64/` If you prefer static linking, you can force it using: * `FFMPEG_STATIC=1` ## License Even though this library is distributed under the MIT license, the FFmpeg project has its own license policies that need to be respected. See https://ffmpeg.org/legal.html for more details.