はじめに
「Jetson Nano で ライブ配信ソフト OBS-Studio を動かしてみた。」がかなり実用的だったので、比較のため Raspberry Pi 3 Model B+ でも OBS-Studio を動かしてみました。
ビルドの手順
公式のビルド手順といくつか異なる点がありました。
ビルドに掛かる時間は必要なパッケージのダウンロード/インストールから始めて 1 時間くらい掛かりました。
差分内容
1. インストールする必要なパッケージ名が一部異なる
libfontconfig-dev
- 解決方法 (パッケージ名を変更する)
libfontconfig1-dev
2. インストールする必要なパッケージが存在しない
libfdk-aac-dev
- 解決方法 (apt-get source list へ設定を追加する)
$ sudo vi /etc/apt/sources.list
# 以下の行を追加する
deb http://www.deb-multimedia.org buster main
$ sudo apt-get update -oAcquire::AllowInsecureRepositories=true
$ sudo apt-get install deb-multimedia-keyring
$ sudo apt install libfdk-aac-dev
※ 2020/4/25 追記
Deb-Multimedia Repositoryを追加するとエラーが出る。
W: GPG エラー: http://www.deb-multimedia.org buster InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 5C808C2B65558117
W: リポジトリ http://www.deb-multimedia.org buster InRelease は署名されていません。
N: このようなリポジトリから取得したデータは認証できないので、データの使用は潜在的に危険です。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください
対策: 公開鍵を登録する。
$ sudo apt-get install deb-multimedia-keyring
3. ビルドが途中で止まる
- 解決方法 (スワップを追加して、make のオプションを変更する)
$ sudo vi /etc/dphys-swapfile
# 値を100から1024へ変更する
CONF_SWAPSIZE=100 → 1024
# 設定変更を反映する
$ sudo /etc/init.d/dphys-swapfile restart
# 設定変更を確認する
$ swapon -s
# make の引数を -j4 から -j3 へ変更する
$ make -j3
環境
- Raspberry Pi 3 Model B+
- OS イメージ Raspbian buster (2019-09-26-raspbian-buster-full.zip)
Raspbian GNU/Linux 10 (buster) - ウェブカメラ (Logitech, Inc. Webcam C270)
手順
1. パッケージを最新の状態に更新する
$ sudo apt update
$ sudo apt upgrade
2. 必要なパッケージをダウンロード/インストールする
$ sudo apt install \
build-essential \
checkinstall \
cmake \
git \
libmbedtls-dev \
libasound2-dev \
libavcodec-dev \
libavdevice-dev \
libavfilter-dev \
libavformat-dev \
libavutil-dev \
libcurl4-openssl-dev \
libfontconfig1-dev \
libfreetype6-dev \
libgl1-mesa-dev \
libjack-jackd2-dev \
libjansson-dev \
libluajit-5.1-dev \
libpulse-dev \
libqt5x11extras5-dev \
libspeexdsp-dev \
libswresample-dev \
libswscale-dev \
libudev-dev \
libv4l-dev \
libvlc-dev \
libx11-dev \
libx264-dev \
libxcb-shm0-dev \
libxcb-xinerama0-dev \
libxcomposite-dev \
libxinerama-dev \
pkg-config \
python3-dev \
qtbase5-dev \
libqt5svg5-dev \
swig \
libxcb-randr0-dev \
libxcb-xfixes0-dev \
libx11-xcb-dev \
libxcb1-dev
3. OBS-Studio のソースコードをダウンロードする
$ git clone --recursive https://github.com/obsproject/obs-studio.git
4. OBS-Studio をビルドする
"ブラウザソースなし"でビルドしました。
$ cd obs-studio
$ mkdir build && cd build
$ cmake -DUNIX_STRUCTURE=1 -DCMAKE_INSTALL_PREFIX=/usr ..
$ make -j3
$ sudo make install
Raspberry Pi での実行
コマンドプロンプトから普通に OBS を実行すれば問題ありませんでした。
$ obs
Jetson Nano との比較
起動後の CPU 使用率に大きな差がありました。Jetson Nano は 6% 程度でしたが、Raspberry Pi は 60% 程度でした。
OBS のソースに 映像キャプチャーデバイス (USB カメラ)、音声キャプチャーデバイス (USB カメラ)、ウィンドウキャプチャー、テロップ (テキスト) を追加した時点で CPU 使用率は 90% 近くとなり、フレームレートも 9 fps まで落ち込んだ状態になりました。(Jetson Nano は CPU 使用率もフレームレートも変化がありませんでした。)
この時点で YouTube Live 配信は無理だと思いましたが、比較検証のため配信を行ったところ CPU 使用率は 100% となり、フレームレートも 3 fps まで落ち込んだ状態になりました。(Jetson Nano は CPU 使用率 60% 程度でフレームレートの落ち込みはありませんでした。)
(参考) YouTube Live 配信のアーカイブ動画 (映像はカクカクで、音声もノイズが入って聞きづらいです)
https://youtu.be/_8X9Sofn0VE
さいごに
やはり GPU を使用 (ハードウェアエンコードを有効利用) しないと実用的でないことが分かりました。
では、OBS-Studio で良き配信ライフを!
※ 2020/4/12 17:13 追記
raspi-config コマンドで OpenGL ドライバの設定を変更することができますが、OBS-Studio ではサポートされていない GPU のため、OBS 起動時にエラーが出てプロセスが終了します。