「インストール - FFmpeg」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
18行目: 18行目:
  sudo zypper install wget pkg-config autoconf automake glibc-devel gcc-c++ cmake git libtool meson ninja nasm yasm \
  sudo zypper install wget pkg-config autoconf automake glibc-devel gcc-c++ cmake git libtool meson ninja nasm yasm \
                     zlib-devel libgnutlsxx-devel libSDL2-devel libnuma-devel freetype2-devel fribidi-devel \
                     zlib-devel libgnutlsxx-devel libSDL2-devel libnuma-devel freetype2-devel fribidi-devel \
                     perf-devel xxhash-devel libxml2-devel libICE-devel libSM-devel \
                     xxhash-devel libxml2-devel libICE-devel libSM-devel \
                     libgme-devel codec2-devel libcdio-devel libcdio-paranoia-devel libbluray-devel librsvg-devel libtwolame-devel \
                     libgme-devel codec2-devel libcdio-devel libcdio-paranoia-devel libbluray-devel librsvg-devel libtwolame-devel \
                     libvidstab-devel libwebp-devel libvpx-devel libxvidcore-devel zvbi-devel cppzmq-devel zimg-devel libmysofa-devel \
                     libvidstab-devel libwebp-devel libvpx-devel libxvidcore-devel zvbi-devel cppzmq-devel zimg-devel libmysofa-devel \
282行目: 282行目:
   
   
  ../configure --prefix=<FFmpegのインストールディレクトリ> \
  ../configure --prefix=<FFmpegのインストールディレクトリ> \
               --enable-gpl --enable-gnutls --enable-libfreetype --enable-libfribidi --enable-linux-perf \
               --enable-shared \  # FFmpegの設定オプション
               --enable-libxml2 --enable-libcdio --enable-libbluray --enable-libpulse --enable-alsa \
              --enable-gray  \  # FFmpegの設定オプション
               --enable-libdc1394 --enable-libgme --enable-libcodec2 --enable-libtheora --enable-libmysofa \
              # 以下は、外部ライブラリのサポート
               --enable-libtwolame --enable-libvidstab --enable-libwebp --enable-libvpx \
              --enable-gpl \
              --enable-libxvid --enable-libzvbi --enable-libzmq --enable-libzimg \
              --enable-gnutls \
               --enable-openal --enable-opengl --enable-libdrm \
               --enable-libfontconfig --enable-libfreetype --enable-libfribidi \  # ドローテキストフィルタ向け
               --enable-libass      \
              --enable-libxml2 \
               --enable-libmp3lame  \
               --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-openal --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-libx264    \  # H.264
               --enable-libx265    \  # H.265/HEVC
               --enable-libx265    \  # H.265/HEVC
298行目: 310行目:
               --enable-libdav1d    \  # AV1デコーダ(libaomよりも高速)
               --enable-libdav1d    \  # AV1デコーダ(libaomよりも高速)
               --enable-libaom      \  # AV1 ビデオエンコーダ/デコーダ
               --enable-libaom      \  # AV1 ビデオエンコーダ/デコーダ
               --enable-libsvtav1  \
               --enable-libsvtav1  \ # AV1 ビデオエンコーダ/デコーダ
               --enable-libvorbis  \
               --enable-libvorbis  \ # オーディオ向けの汎用圧縮オーディオフォーマット
               --enable-libvmaf
               --enable-libvmaf     \
              --enable-libcodec2  \  # 700~3200[bps]の通信品質の音声に対応した音声コーデック
              --enable-libmysofa  \  # AES69-2015規格に従って保存されたHRTFを含むAES SOFAファイルを読み込むためのライブラリ
              --enable-libdc1394  \  # 1394 BDCSに準拠したカメラを制御するための機能(カメラとの通信は、libraw1394が提供する低レベルの機能を利用)
              --enable-libgme        # Game Music Emulatorは、ビデオゲーム音楽ファイルエミュレータ集
  make -j $(nproc)
  make -j $(nproc)
  make install
  make install

2022年11月21日 (月) 22:16時点における版

概要

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 libgnutlsxx-devel libSDL2-devel libnuma-devel freetype2-devel fribidi-devel \
                    xxhash-devel libxml2-devel libICE-devel libSM-devel \
                    libgme-devel codec2-devel libcdio-devel libcdio-paranoia-devel libbluray-devel librsvg-devel libtwolame-devel \
                    libvidstab-devel libwebp-devel libvpx-devel libxvidcore-devel zvbi-devel cppzmq-devel zimg-devel libmysofa-devel \
                    alsa-devel liba52-devel libass-devel libmp3lame-devel libva-devel libvdpau-devel libvorbis-devel \
                    libfaac-devel libfaad-devel libdc1394-devel giflib-devel imlib2-devel libgsm-devel libtheora-devel libgpac-devel \
                    dav1d-devel libaom-devel libunistring-devel libamrnb-devel libamrwb-devel libopencore-amr-devel vmaf-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 \
                    texinfo texi2html


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"



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 -DENABLE_NASM=on ..
make -j $(nproc)
make install
# または
cmake -G Ninja -DCMAKE_INSTALL_PREFIX=<FFmpegのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release -DENABLE_TESTS=OFF -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



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-openal --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-libgme         # Game Music Emulatorは、ビデオゲーム音楽ファイルエミュレータ集
make -j $(nproc)
make install