Skip to main content

GStreamer をビルドする

GStreamer をソースからビルドする方法は 2 通りあります。

それぞれ、以下の OS にて確認しました。

  • Debian GNU/Linux 10 (buster)
  • Debian GNU/Linux 11 (bullseye)
  • Ubuntu 18.04 (Bionic Beaver)
  • Ubuntu 20.04 (Focal Fossa)

Cerbero によるビルド

Cerbero という独自のクロスプラットフォームビルドアグリゲーターを使ったビルド。必要なパッケージのインストールも自動的におこない、パッケージの作成まで一括して実行してくれます。細かいビルドオプションはなさそうです。あと arm64 アーキではうまくいきませんでした。

参考) Building from source using Cerbero

ビルド手順

ビルド準備

以下のパッケージがインストールされていない場合は事前にインストールしておきます。

sudo apt-get update -y
sudo apt-get install -y git python3 python3-distro python3-setuptools

ビルド実行

git clone -b 1.20.3 https://gitlab.freedesktop.org/gstreamer/cerbero.git
cd cerbero
./cerbero-uninstalled bootstrap -y
./cerbero-uninstalled package gstreamer-1.0

ビルド結果は build/dist/linux_(アーキ)/ 配下に出力され、動作に必要なものが gstreamer-1.0-linux-(アーキ)-(バージョン).tar.xz にパッケージ化までおこなわれます。

Debian 10 に関する補足

Debian GNU/Linux 10 (buster) では libkate のコンパイルに失敗しました。

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libfl.so: undefined reference to `yylex'

原因はよく分かりませんが、とりあえず flex の代わりに flex-old をインストールすることでコンパイルできました。ただし逆に flex-old だと失敗するモジュールもあるので、libkate だけ個別にビルドすると良さそうです。

例)

./cerbero-uninstalled bootstrap -y
sudo apt-get install -y flex-old
./cerbero-uninstalled build libkate
sudo apt-get install -y flex
./cerbero-uninstalled package gstreamer-1.0

Meson によるビルド

Meson/Ninja を使ったビルド。こちらのほうがビルドオプションが細かく設定できるので、必要なものだけビルドしたい場合はこちらが良いです。

参考) Building from source using Meson

ビルド手順

ビルド準備

以下のパッケージがインストールされていない場合は事前にインストールしておきます。

apt-get install -y bison flex git pkg-config python3 python3-pip
python3 -m pip install meson ninja

その他、プラグインで必要なライブラリがあればインストールしておきます。(必要なライブラリがないプラグインはビルド対象から除外されます。)

ビルド実行

git clone -b 1.20.3 https://gitlab.freedesktop.org/gstreamer/gstreamer.git
cd gstreamer
meson build/
ninja -C build/

動作確認

build/ 配下で以下のコマンドを実行すると、ビルドした GStreamer を実行するための環境を設定することができます。

ninja devenv

インストール

build/ 配下で以下のコマンドを実行して、ビルドした GSstreamer をインストールします。

sudo ninja install

ビルド設定

ビルド設定のオプションは、meson 実行時(build ディレクトリ作成時)に指定します。

meson (オプション指定) build/

build ディレクトリ作成後に設定を変更する場合は --reconfigure をつけます。

meson --reconfigure (オプション指定) build/

現在の設定を確認するには以下のコマンドを実行します。

meson configure build/

設定可能なオプションのリストは、ルートと各サブプロジェクト配下 (subproject/xyz/) にそれぞれある meson_options.txt に記述されているので、それを参考にします。例えば type: 'feature' と記述されているものは、有効(enable)/無効(disabled)/自動(auto) が指定できます。オプションを指定する場合は meson 実行時に -D<オプション名>=<値> (サブプロジェクト配下の設定は -D(サブプロジェクト名):(オプション名)=(値)) と指定します。

以下はオプションの一部です。

prefix オプション

インストール先を変更します。(未指定時は /usr/local)

meson -Dprefix=/usr/local/gstreamer build/

gpl オプション

(A)GPL ライセンスのプラグインもビルドする場合に指定します。(未指定時はビルドしない)

meson -Dgpl=enabled build/

共通オプション

以下のオプションは全サブプロジェクトに適用されます。

オプション名未指定時説明
testsfeatureautoテスト
examplesfeatureautoサンプル
introspectionfeatureautoイントロスペクションデータを生成
nlsfeatureautoNLS (Native Language Support; 翻訳) を有効化
orcfeatureautoORC (Optimized Inner Loop Runtime Compiler) を有効化
docfeatureautoAPI ドキュメントを生成 (hotdoc)
gtk_docfeaturedisabledAPI ドキュメントを生成 (gtk-doc)

機能オプション

ビルドする機能、プラグインなどを選択するオプションです。各サブプロジェクトごとに更に細かい単位で選択することもできます。

オプション名未指定時説明
pythonfeatureauto
libavfeatureautogst-libav - FFmpeg プラグイン
libnicefeatureauto
basefeatureenabledgst-plugins-base - 基本的なプラグインのセット
goodfeatureenabledgst-plugins-good - 品質が良いプラグインのセット
uglyfeatureautogst-plugins-ugly - 品質は問題ないが、ライセンスに注意が必要なプラグインのセット
badfeatureautogst-lugins-bad - 品質に課題のあるプラグインのセット
devtoolsfeatureauto
gesfeatureautogst-editing-services - GStreamer Editing Services
rtsp_serverfeatureautogst-rtsp-server - GStreamer RTSP Server
omxfeaturedisabledgst-omx - OpenMax プラグイン
vaapifeaturedisabledVAAPI プラグイン
sharpfeaturedisabled
rsfeaturedisabled
gst-examplesfeatureautogst-examples
tlsfeatureautoglib-networking による TLS サポート
qt5featureautoQt5 サポート

例) 最小構成

meson --reconfigure \
-Dpython=disabled \
-Dlibav=disabled \
-Dlibnice=disabled \
-Dbase=disabled \
-Dgood=disabled \
-Dugly=disabled \
-Dbad=disabled \
-Ddevtools=disabled \
-Dges=disabled \
-Drtsp_server=disabled \
-Dgst-examples=disabled \
-Dtls=disabled \
-Dqt5=disabled \
build/