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

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
17行目: 17行目:
== ビルドに必要なライブラリのインストール ==
== ビルドに必要なライブラリのインストール ==
  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 libICE-devel libSM-devel freetype2-devel xxhash-devel \
                     zlib-devel libgnutlsxx-devel libSDL2-devel libnuma-devel freetype2-devel fribidi-devel \
                     openal-soft-devel glu-devel opencl-cpp-headers libopenssl-devel libopenssl-1_1-devel gmp-devel perf-devel libdrm-devel \
                     perf-devel xxhash-devel libxml2-devel libICE-devel libSM-devel \
                     libgme-devel codec2-devel libcdio-devel libcdio-paranoia-devel librsvg-devel fribidi-devel libtwolame-devel \
                     libgme-devel codec2-devel libcdio-devel libcdio-paranoia-devel libbluray-devel librsvg-devel libtwolame-devel \
                     v4l-utils-devel-tools libvidstab-devel libwebp-devel libvpx-devel libxvidcore-devel zvbi-devel cppzmq-devel zimg-devel \
                     libvidstab-devel libwebp-devel libvpx-devel libxvidcore-devel zvbi-devel cppzmq-devel zimg-devel libmysofa-devel \
                    lv2-devel libfuzzy-devel libbluray-devel libxml2-devel libmysofa-devel \
                     alsa-devel liba52-devel libass-devel libmp3lame-devel libva-devel libvdpau-devel libvorbis-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 \
                     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 \
                     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 \
                     libxcb-devel xcb-util-devel libX11-devel libXfixes-devel libXext-devel libXau-devel libXdmcp-devel \
                     libXrandr-devel libXrender-devel libXt-devel opencv-devel \
                     libXrandr-devel libXrender-devel libXt-devel glu-devel libdrm-devel openal-soft-devel \
                     texinfo texi2html
                     texinfo texi2html
<br>
<br>

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

概要

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 \
                    perf-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-gpl --enable-gnutls --enable-libfreetype --enable-libfribidi --enable-linux-perf \
             --enable-libxml2 --enable-libcdio --enable-libbluray --enable-libpulse --enable-alsa \
             --enable-libdc1394 --enable-libgme --enable-libcodec2 --enable-libtheora --enable-libmysofa \
             --enable-libtwolame --enable-libvidstab --enable-libwebp --enable-libvpx \
             --enable-libxvid --enable-libzvbi --enable-libzmq --enable-libzimg \
             --enable-openal --enable-opengl --enable-libdrm \
             --enable-libass      \
             --enable-libmp3lame  \
             --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   \
             --enable-libvorbis   \
             --enable-libvmaf
make -j $(nproc)
make install