FFMPEG¶
FFMPEG stands for Fast Forward Moving Picture Experts Group. It is a free and open source software project that offers many tools for video and audio processing. With FFMPEG, you can decode, encode, transcode, mux, demux, stream, filter and play most types of video and audio.
At its core is the command-line ffmpeg tool itself, designed for processing of video and audio files. It is widely used for format transcoding, basic editing (trimming and concatenation), video scaling, video post-production effects and standards compliance (SMPTE, ITU).
ffmpeg, #Fast Forward Moving Picture Experts Group, #video processing, #audio processing, #media processing, #transcode¶
Software Components¶
Table 1 lists the necessary software components. The descending row order represents the install sequence. The recommended component version and download location are also provided.
Table 1: Software Components
| Component | Version |
|---|---|
| UBUNTU | v22.04 |
| YASM | v1.3.0 |
| LIBX264 | baee400fa9ced6f5481a728138fed6e867b0ff7f |
| LIBX265 | v3.5 |
| LIBVPX | v1.9.0 |
| SVT HEVC | 6cca5b932623d3a1953b165ae6b093ca1325ac44 |
| DAV1D | v0.9.0 |
| SVT AV1 | v1.5.0 |
| FFMPEG | n6.0 |
Configuration Snippets¶
This section contains code snippets on build instructions for software components.
Note: Common Linux utilities, such as docker, git, wget, will not be listed here. Please install on demand if it is not provided in base OS installation.
UBUNTU¶
YASM¶
YASM_VER=1.3.0
YASM_REPO=https://github.com/OpenVisualCloud/Dockerfiles-Resources/raw/master/yasm-${YASM_VER}.tar.gz
cd /opt/build && \
wget --no-check-certificate -O - ${YASM_REPO} | tar xz
cd /opt/build/yasm-1.3.0 && \
./configure --prefix=/usr/local --libdir=/usr/local/lib64 && \
make -j $(nproc) && \
make install
LIBX264¶
LIBX264_VER=baee400fa9ced6f5481a728138fed6e867b0ff7f
LIBX264_REPO=https://code.videolan.org/videolan/x264.git
cd /opt/build && \
git clone ${LIBX264_REPO} -b stable && \
cd x264 && \
git checkout ${LIBX264_VER} && \
./configure --prefix=/usr/local --libdir=/usr/local/lib64 --bindir=/usr/local/bin --enable-shared --enable-pic && \
make -j$(nproc) && \
make install DESTDIR=/opt/dist && \
make install
LIBX265¶
LIBX265_VER=3.5
LIBX265_REPO=https://github.com/videolan/x265/archive/${LIBX265_VER}.tar.gz
cd /opt/build && \
git clone ${LIBX265_REPO} && cd x265 && \
git checkout ${LIBX265_VER} && \
cd build/linux && \
cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr/local -DLIB_INSTALL_DIR=/usr/local/lib64 ../../source && \
make -j$(nproc) && \
make install DESTDIR=/opt/dist && \
make install
LIBVPX¶
LIBVPX_VER=v1.9.0
LIBVPX_REPO=https://chromium.googlesource.com/webm/libvpx.git
cd /opt/build && \
git clone ${LIBVPX_REPO} -b ${LIBVPX_VER} --depth 1 && \
cd libvpx && \
./configure --prefix=/usr/local --libdir=/usr/local/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm && \
make -j$(nproc) && \
make install DESTDIR=/opt/dist && \
make install
SVT HEVC¶
SVT_HEVC_VER=6cca5b932623d3a1953b165ae6b093ca1325ac44
SVT_HEVC_REPO=https://github.com/OpenVisualCloud/SVT-HEVC
cd /opt/build && \
git clone ${SVT_HEVC_REPO} && cd SVT-HEVC && git checkout ${SVT_HEVC_VER}
cd /opt/build/SVT-HEVC/Build/linux && \
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../.. && \
make -j $(nproc) && \
make install DESTDIR=/opt/dist && \
make install
DAV1D¶
DAV1D_VER=0.9.0
DAV1D_REPO=https://code.videolan.org/videolan/dav1d/-/archive/${DAV1D_VER}/dav1d-${DAV1D_VER}.tar.gz
cd /opt/build && \
wget -O - ${DAV1D_REPO} | tar xz
cd /opt/build/dav1d-${DAV1D_VER} && \
meson build --prefix=/usr/local --libdir /usr/local/lib64 --buildtype=plain && \
cd build && \
ninja install && \
DESTDIR=/opt/dist ninja install
SVT AV1¶
SVT_AV1_VER=v1.5.0
SVT_AV1_REPO=https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/${SVT_AV1_VER}/SVT-AV1-${SVT_AV1_VER}.tar.gz
cd /opt/build && \
wget -O - ${SVT_AV1_REPO} | tar zx && \
mv SVT-AV1-${SVT_AV1_VER} SVT-AV1 && \
cd SVT-AV1/Build/linux && \
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 -DCMAKE_ASM_NASM_COMPILER=yasm ../.. && \
make -j $(nproc) && \
sed -i "s/SvtAv1dec/SvtAv1Dec/" SvtAv1Dec.pc && \
make install DESTDIR=/opt/dist && \
make install
FFMPEG¶
FFMPEG_VER=release/6.0
FFMPEG_REPO=https://github.com/FFmpeg/FFmpeg.git
cd /opt/build && \
git clone ${FFMPEG_REPO} -b ${FFMPEG_VER} ffmpeg
cd /opt/build/ffmpeg && \
git apply /opt/build/SVT-HEVC/ffmpeg_plugin/master-0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch && \
./configure --cc=${AOCC} --cxx=${AOCXX} --prefix=/usr/local --libdir=/usr/local/lib64 --bindir=/usr/local/bin --enable-shared --disable-doc --disable-htmlpages \
--disable-manpages --disable-podpages --disable-txtpages \
--extra-cflags=-w --enable-nonfree --enable-libass --enable-libfreetype --disable-xlib --disable-sdl2 --disable-hwaccels --disable-vaapi \
--enable-libvpx --enable-libx264 --enable-gpl --enable-libx265 --enable-libsvthevc --enable-libsvtav1 --enable-libdav1d --extra-libs="-lpthread -lm" && \
make -j$(nproc) && \
make install DESTDIR=/opt/dist && \
make install
Workload Services Framework
-end of document-