コンテンツにスキップ

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/

共通オプション

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

オプション名 未指定時 説明
tests feature auto テスト
examples feature auto サンプル
introspection feature auto イントロスペクションデータを生成
nls feature auto NLS (Native Language Support; 翻訳) を有効化
orc feature auto ORC (Optimized Inner Loop Runtime Compiler) を有効化
doc feature auto API ドキュメントを生成 (hotdoc)
gtk_doc feature disabled API ドキュメントを生成 (gtk-doc)

機能オプション

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

オプション名 未指定時 説明
python feature auto
libav feature auto gst-libav - FFmpeg プラグイン
libnice feature auto
base feature enabled gst-plugins-base - 基本的なプラグインのセット
good feature enabled gst-plugins-good - 品質が良いプラグインのセット
ugly feature auto gst-plugins-ugly - 品質は問題ないが、ライセンスに注意が必要なプラグインのセット
bad feature auto gst-lugins-bad - 品質に課題のあるプラグインのセット
devtools feature auto
ges feature auto gst-editing-services - GStreamer Editing Services
rtsp_server feature auto gst-rtsp-server - GStreamer RTSP Server
omx feature disabled gst-omx - OpenMax プラグイン
vaapi feature disabled VAAPI プラグイン
sharp feature disabled
rs feature disabled
gst-examples feature auto gst-examples
tls feature auto glib-networking による TLS サポート
qt5 feature auto Qt5 サポート

例) 最小構成

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/