概要
FFmpegは、デコード、エンコード、トランスコード、マルチプレクサ、デマルチプレクサ、ストリーム、フィルタリング等の多くのものを再生することができるマルチメディアフレームワークである。
不明瞭な古いフォーマットから最先端のものまでをサポートしている。
FFmpegから使用できるライブラリには、以下に示すものが含まれている。
- libavcodec
- libavutil
- libavformat
- libavfilter
- libavdevice
- libswscale
- libswresample
また、ffmpegファイル、ffplayファイル、ffprobeファイル等の実行ファイルは、エンドユーザがトランスコードや再生に使用することができる。
ビルドに必要なライブラリのインストール
sudo zypper install wget pkg-config autoconf automake glibc-devel gcc-c++ cmake git libtool meson ninja nasm yasm \ zlib-devel libgnutls-devel libgnutlsxx-devel libSDL2-devel libnuma-devel \ fontconfig-devel freetype2-devel fribidi-devel xxhash-devel libxml2-devel libICE-devel libSM-devel \ libchromaprint-devel frei0r-plugins-devel l-smash-devel \ libgme-devel codec2-devel rav1e-devel libcdio-devel libcdio-paranoia-devel libbluray-devel libtwolame-devel \ libvidstab-devel libwebp-devel libxvidcore-devel zvbi-devel cppzmq-devel zimg-devel libmysofa-devel \ alsa-devel libpulse-devel liba52-devel libass-devel libva-devel libvdpau-devel libvorbis-devel libfaac-devel libfaad-devel \ libbs2b-devel libdc1394-devel libraw1394-devel imlib2-devel libgsm-devel libtheora-devel libgpac-devel \ giflib-devel librsvg-devel libunistring-devel libamrnb-devel libamrwb-devel libopencore-amr-devel \ libxcb-devel xcb-util-devel libX11-devel libXfixes-devel libXext-devel libXau-devel libXdmcp-devel \ libXrandr-devel libXrender-devel libXt-devel glu-devel libdrm-devel openal-soft-devel \ libcaca-devel gluegen2-devel liblcms2-devel \ texinfo texi2html \ snappy-devel librubberband-devel shaderc-devel libshine-devel soxr-devel librtmp-devel srt-devel speex-devel \ # 必要な場合 yasm nasm \ # 手動でインストールしない場合 vmaf-devel \ # 手動でインストールしない場合 x264-devel \ # 手動でインストールしない場合 x265-devel \ # 手動でインストールしない場合 libfdk-aac-devel \ # 手動でインストールしない場合 libvpx-devel \ # 手動でインストールしない場合 libopus-devel \ # 手動でインストールしない場合 dav1d-devel \ # 手動でインストールしない場合 libaom-devel \ # 手動でインストールしない場合 libmp3lame-devel # 手動でインストールしない場合
tex2htmlライブラリをパッケージ管理システムからインストールする場合、膨大な依存関係のライブラリをインストールすることになるため、多くの時間が掛かる。
手動でtexi2htmlライブラリをインストールする方が、より短い時間でできる可能性がある。
詳細は、インストール - Git#依存関係のライブラリのインストールを参照すること。
NASMアセンブラのインストール (必要な場合のみ)
NASMアセンブラは、FFmpegの一部のビルドに必要なアセンブラである。
例えば、FFmpeg 5.0では、FFmpegのアセンブルに必要なNASMアセンブラは2.13以降であるため、
パッケージ管理システムのNASMアセンブラが2.12以前の場合は、手動でインストールする必要がある。
NASMアセンブラの公式Webサイトにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf nasm-<バージョン>.tar.xz cd nasm-<バージョン>
NASMアセンブラをビルドおよびインストールする。
mkdir build && cd build ../configure --prefix=<NASMアセンブラのインストールディレクトリ> make -j $(nproc) make install
~/.profileファイル等に環境変数を追記する。
vi ~/.profile
export PATH="/<NASMアセンブラのインストールディレクトリ>/:$PATH"
YASMアセンブラのインストール (必要な場合のみ)
YASMは、2条項BSDライセンスのもと、NASMを全面的に書き直したものであり、複数の構文をネイティブに理解できるように設計されている。
YASMの主な目的は、低レベルでコードを扱うことができ、他のソフトウェアプロジェクトに容易に統合することができる再利用可能なライブラリであるlibyasmを作成することである。
YASMアセンブラの公式Webサイトにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf yasm-<バージョン>.tar.gz cd yasm-<バージョン>
または、git clone
コマンドを使用して、ソースコードをダウンロードする。
git clone https://github.com/yasm/yasm.git cd yasm
YASMアセンブラをビルドおよびインストールする。
mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=<YASMアセンブラのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release -DENABLE_NLS=ON .. make -j $(nproc) make install
~/.profileファイル等に環境変数を追記する。
vi ~/.profile
export PATH="/<YASMアセンブラのインストールディレクトリ>/:$PATH"
VMAFライブラリのインストール
VMAFライブラリとは、ビデオ品質指標VMAFを算出するためのライブラリである。
VMAFライブラリのGithubにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf vmaf-<バージョン>.tar.xz cd vmaf-<バージョン>
または、git clone
コマンドを実行して、ソースコードをダウンロードする。
git clone https://github.com/Netflix/vmaf.git cd vmaf
VMAFライブラリをビルドおよびインストールする。
mkdir build && cd build meson setup --prefix <FFmpegのインストールディレクトリ> -Denable_tests=false -Denable_docs=false --buildtype=release .. \ --default-library=static # スタティックライブラリを使用する場合 ninja -C . ninja -C .install
H.264ビデオエンコーダのインストール
VideoLanのGitLabから、H.264ビデオエンコーダのソースコードをダウンロードする。
git clone https://code.videolan.org/videolan/x264.git -b stable cd x264
H.264ビデオエンコーダをビルドおよびインストールする。
mkdir build && cd build ../configure --prefix=<FFmpegのインストールディレクトリ> --enable-shared --enable-static --enable-bashcompletion --enable-pic make -j $(nproc) make install
H.265/HEVC ビデオエンコーダのインストール
H.265/HEVC ビデオエンコーダの公式Webサイトにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf x265_<バージョン>.tar.gz cd x265_<バージョン>
または、H.265/HEVCビデオエンコーダのBitBucketから、H.264/HEVC ビデオエンコーダのソースコードをダウンロードする。
git clone https://bitbucket.org/multicoreware/x265_git.git -b stable cd x265_git
H.265/HEVC ビデオエンコーダをビルドおよびインストールする。
mkdir build_x265 && cd build_x265 cmake -DCMAKE_INSTALL_PREFIX=<FFmpegのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release ../source/ make -j $(nproc) make install # または cmake -G Ninja -DCMAKE_INSTALL_PREFIX=<FFmpegのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release ../source/ ninja -C . ninja -C .install
VP8/VP9 ビデオエンコーダ/デコーダのインストール
VP8/VP9 ビデオエンコーダ/デコーダの公式Webサイトにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf libvpx-<バージョン>.tar.gz cd libvpx-<バージョン>
または、git clone
コマンドを実行して、ソースコードをダウンロードする。
git clone https://github.com/webmproject/libvpx.git cd libvpx
VP8/VP9 ビデオエンコーダ/デコーダをビルドおよびインストールする。
mkdir build_vpx && cd build_vpx ../configure --prefix=<FFmpegのインストールディレクトリ> --enable-shared --enable-vp8 --enable-vp9 \ --enable-webm-io --enable-libyuv make -j $(nproc) make install
AACオーディオエンコーダのインストール
AACオーディオエンコーダのsourceForgeまたはGithubにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf fdk-aac-<バージョン>.tar.gz cd fdk-aac-<バージョン>
または、git clone
コマンドを実行して、ソースコードをダウンロードする。
git clone https://github.com/mstorsjo/fdk-aac.git cd lifdk-aac
AACオーディオエンコーダをビルドおよびインストールする。
mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=<FFmpegのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release .. make -j $(nproc) make install # または cmake -G Ninja -DCMAKE_INSTALL_PREFIX=<FFmpegのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release .. ninja -C . ninja -C .install
Opus オーディオデコーダ / エンコーダ
Opus オーディオデコーダ / エンコーダの公式Webサイトにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf opus-<バージョン>.tar.gz cd opus-<バージョン>
または、git clone
コマンドを実行して、ソースコードをダウンロードする。
git clone https://github.com/xiph/opus.git cd opus
Opus オーディオデコーダ / エンコーダをビルドおよびインストールする。
mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=<FFmpegのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_SHARED_LIBRARY=ON .. make -j $(nproc) make install # または cmake -G Ninja -DCMAKE_INSTALL_PREFIX=<FFmpegのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_SHARED_LIBRARY=ON .. ninja -C . ninja -C .install
AV1 デコーダ (dav1d)のインストール
dav1dライブラリは、AOMが提供するライブラリよりもはるかに高速である。
AVX-512をサポートするためには、NASM 2.14以降が必要である。
もし、AVX-512を無効にする場合は、meson
コマンドのセットアップにおいて、-Denable_avx512=false
オプションを付加する。
VideoLanの公式Webサイトにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf dav1d-<バージョン>.tar.xz cd dav1d-<バージョン>
または、git clone
コマンドを実行して、ソースコードをダウンロードする。
git clone https://code.videolan.org/videolan/dav1d.git cd dav1d
AV1デコーダ(dav1d)をビルドおよびインストールする。
mkdir build && cd build meson setup .. --prefix <FFmpegのインストールディレクトリ> -Denable_tests=false \ --default-library=static # スタティックライブラリを使用する場合 ninja -C . ninja -C .install
AV1 ビデオエンコーダ/デコーダ (AOM)のインストール
AV1 ビデオエンコーダ/デコーダは、安定したAPIを持っていない可能性があるため、libavcodec / libaomenc.cのコンパイルに失敗する場合がある。
その時は、パッケージ管理システムからAV1 ビデオエンコーダ/デコーダをインストールすること。
AV1 ビデオエンコーダ/デコーダの公式Webサイトにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf aom-<タグ名>.tar.gz cd aom-<タグ名>
または、git clone
コマンドを実行して、ソースコードをダウンロードする。
git clone https://aomedia.googlesource.com/aom cd aom
AV1 ビデオエンコーダ/デコーダをビルドおよびインストールする。
mkdrir build_aom && cd build_aom cmake -DCMAKE_INSTALL_PREFIX=<FFmpegのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release -DENABLE_TESTS=OFF -DBUILD_SHARED_LIBS=1 -DENABLE_NASM=on .. make -j $(nproc) make install # または cmake -G Ninja -DCMAKE_INSTALL_PREFIX=<FFmpegのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release -DENABLE_TESTS=OFF -DBUILD_SHARED_LIBS=1 -DENABLE_NASM=on .. ninja -C . ninja -C . install
AV1 ビデオエンコーダ/デコーダ (SVT-AV1)のインストール
AV1 ビデオエンコーダ/デコーダ (SVT-AV1)のGitLabにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf SVT-AV1-<バージョン>.tar.gz cd SVT-AV1-<バージョン>
git clone
コマンドを実行して、AV1 ビデオエンコーダ/デコーダ (SVT-AV1)のソースコードをダウンロードする。
git clone --depth 1 https://gitlab.com/AOMediaCodec/SVT-AV1.git cd SVT-AV1
AV1 ビデオエンコーダ/デコーダ (SVT-AV1)をビルドおよびインストールする。
mkdrir build && cd build cmake -DCMAKE_INSTALL_PREFIX=<FFmpegのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release -DENABLE_AVX512=ON .. \ -DBUILD_DEC=OFF # デコーダを無効にする場合 make -j $(nproc) make install # または cmake -G Ninja -DCMAKE_INSTALL_PREFIX=<FFmpegのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release -DENABLE_AVX512=ON .. \ -DBUILD_DEC=OFF # デコーダを無効にする場合 ninja -C . ninja -C . install
AviSynth+のインストール
AviSynth+ライブラリは、AviSynthフレームサーバの改良版であり、機能と開発者の利便性を向上させたものである。
AviSynth+ライブラリのGithubにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf AviSynthPlus-<バージョン>.tar.gz cd AviSynthPlus-<バージョン>
または、git clone
コマンドを実行して、ソースコードをダウンロードする。
https://github.com/AviSynth/AviSynthPlus.git cd AviSynthPlus
AviSynth+ライブラリをビルドおよびインストールする。
mkdir build && cd build cmake -DCMAKE_C_COMPILER=<GCC 8以降のgccファイルのパス> -DCMAKE_CXX_COMPILER=<GCC 8以降のg++ファイルのパス> \ -DCMAKE_INSTALL_PREFIX=<FFmpegのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release .. make -j $(nproc) make install
Lameのインストール
LameのSourceForgeにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf lame-<バージョン>.tar.gz cd lame-<バージョン>
Lameをビルドおよびインストールする。
mkdrir build && cd build ../configure --prefix=<FFmpegのインストールディレクトリ> --enable-mp3x --enable-mp3rtp --with-vorbis --enable-nasm make -j $(nproc) make install
FFmpegのインストール
FFmpegの公式webサイトにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf ffmpeg-<バージョン>.tar.xz cd ffmpeg-<バージョン>
または、git clone
コマンドを実行して、ソースコードをダウンロードする。
git clone https://github.com/FFmpeg/FFmpeg.git cd FFmpeg
FFmpegをビルドおよびインストールする。
mkdir build && cd build ../configure --prefix=<FFmpegのインストールディレクトリ> \ --enable-shared \ # FFmpegの設定オプション --enable-gray \ # FFmpegの設定オプション # 以下は、外部ライブラリのサポート --enable-gpl \ --enable-gnutls \ --enable-libfontconfig --enable-libfreetype --enable-libfribidi \ # ドローテキストフィルタ向け --enable-libxml2 \ --enable-libcdio --enable-libbluray --enable-libpulse \ --enable-libtheora \ # オープンなビデオ圧縮フォーマット --enable-libvidstab \ # ビデオのデシェイクを行うライブラリ --enable-libwebp \ --enable-libxvid \ # MPEG-4/Xvid エンコーダ --enable-libzvbi --enable-libzmq --enable-libzimg \ --enable-chromaprint \ # オーディオソースからフィンガープリントを抽出するライブラリ --enable-frei0r \ # 動画フィルタのためのAPI --enable-opengl \ --enable-libdrm \ # Direct-Renderingマネージャライブラリ --enable-libass \ # ASS/SSA (Advanced Substation Alpha/Substation Alpha)サブタイトルフォーマット用のサブタイトルレンダラ (VSFilterと互換性がある) --enable-libmp3lame \ # Lame --enable-libtwolame \ # Mpeg2 最適化エンコーダ --enable-libx264 \ # H.264 --enable-libx265 \ # H.265/HEVC --enable-libvpx \ # VP8/VP9 ビデオエンコーダ/デコーダ --enable-nonfree \ --enable-libfdk-aac \ # AACオーディオエンコーダ --enable-libopus \ # Opus オーディオデコーダ / エンコーダ --enable-libdav1d \ # AV1デコーダ(libaomよりも高速) --enable-libaom \ # AV1 ビデオエンコーダ/デコーダ --enable-libsvtav1 \ # AV1 ビデオエンコーダ/デコーダ --enable-libvorbis \ # オーディオ向けの汎用圧縮オーディオフォーマット --enable-libvmaf \ --enable-libcodec2 \ # 700~3200[bps]の通信品質の音声に対応した音声コーデック --enable-libmysofa \ # AES69-2015規格に従って保存されたHRTFを含むAES SOFAファイルを読み込むためのライブラリ --enable-libdc1394 \ # 1394 BDCSに準拠したカメラを制御するための機能(カメラとの通信は、libraw1394が提供する低レベルの機能を利用) --enable-libbs2b \ # Bauer Stereophonic-to-Binaural DSPは、ステレオ・オーディオレコードのヘッドホンリスニングを改善する --enable-libgsm \ --enable-libgme \ # Game Music Emulatorは、ビデオゲーム音楽ファイルエミュレータ集 --enable-libcaca \ --enable-lcms2 # 2.13以降が必要となる make -j $(nproc) make install
FFmpegの実行に必要なライブラリをインストールする。
sudo zypper install libmysofa1 libzmq5 libcodec2-1_0 gpac