Wrapper for the FFmpeg that simplify usage it from C++ projects.
Currently covered next functionality:
- Core helper & utility classes (AVFrame -> av::AudioSample & av::VideoFrame, AVRational -> av::Rational and so on)
- Container formats & contexts muxing and demuxing
- Codecs & codecs contexts: encoding and decoding
- Streams (AVStream -> av::Stream)
- Filters (audio & video): parsing from string, manual adding filters to the graph & other
- SW Video & Audio resamplers
- FFmpeg >= 2.0
- libavformat >= 54.x.x
- libavcodec >= 54.x.x
- libavfilter >= 3.x.x
- libavutil >= 51.x.x
- libswscale >= 2.x.x
- libswresample >= 0.x.x
- libpostproc >= 52.x.x
- GCC >= 5.0 (C++11 is required)
You should install FFmpeg packages from the deb-multimedia.org site:
sudo apt-get install libavformat-dev \
libavcodec-dev \
libavutil-dev \
libavfilter-dev \
libswscale-dev \
libswresample-dev \
libpostproc-dev
Note 1: I did not test building on Debian.
Note 2: Debian Wheezy repo contains only FFmpeg 1.0.8. I tested building only with 2.x. So it is strongly recoment use Wheezy back-ports repo.
If you are on Ubuntu bionic or Linux Mint 19.x you should add ffmpeg-4 PPA:
sudo add-apt-repository ppa:jonathonf/ffmpeg-4 -y
sudo apt update && sudo apt upgrade
After that just install the same packages as above.
git clone --recurse-submodules https://github.com/h4tr3d/avcpp.git avcpp-git
cd avcpp-git
mkdir build
cd build
cmake ..
make -j8
If your Git version so old (refer to the SO for clarification) you can just
replace --recurse-submodules
with pair of git submodule init && git submodule update
.
If FFmpeg located in non-standard place:
cmake -DPC_FFMPEG_LIBRARY_DIRS=<some_path> -DPC_FFMPEG_INCLUDE_DIRS=<some_path> ..
To point install prefix:
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
Install:
sudo make install
or (for packaging)
sudo make DESTDIR=<some_prefix> install
Refer to CMake documentation for more details that can cover some special cases.