RaspberryPiでSRTをテストする為にffmpegをビルドした話

今配信界隈で話題のSRT(字幕じゃない方)をffmpegで動かせるようにビルドする話です。

残念ながらWindows版はありません。この手の新技術を試す場合はLinuxが定石ですので。

それでは早速SRTとffmpegをビルドしていきましょう。

なお、今回の実行環境はRaspberryPi3&4のBタイプです。

SRTをビルドしてインストール

git clone https://github.com/Haivision/srt.git
cd srt/
git checkout -b v1.4.1 v1.4.1
sudo apt-get install tclsh pkg-config cmake libssl-dev build-essential
./configure 
make
sudo make install

とりあえず上から順番に叩いてください。

ささっと終わると思うので、問題無くインストールまでされたら次はffmpegです。

ffmpegをビルドしてインストール

ffplayでSRTを再生したいぞ!という方は、事前にこちらもインストールしておくと良いでしょう。

sudo apt install libsdl2-dev

ffplayについて環境が整ったら以下を実行しましょう。

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg/
git checkout -b n4.1 n4.1
./configure --enable-libsrt --enable-omx-rpi --enable-mmal --enable-gpl
make
sudo make install

ffmpegではSRTの他にはRaspberryPiのHWエンコも使いたいのでomxとmmalも有効にしています。それぞれが何であるかについては別途検索してください。

ffmpegについてはライブラリが多いので、ビルドが完了するまで40分以上かかると思います。

気長に待ちましょう。

SRTによる通信のテスト

Raspi4とRaspi3にそれぞれ同じffmpeg環境を用意して通信の遅延のチェックを行いました。

環境としては以下の通りです。

PC(Windows)→SRTでPush→Raspi4(SRT受信してRaspi3へPush)→Raspi3(SRTを受信してHDMIモニターに出力)

この構成をローカルでテストして約6秒の遅延。正直使えない・・・。

Windows側のエンコーダーの遅延なのか、そもそもRaspiを通すと処理が遅くて遅延してるのか。

ffmpegのlibsrtのオプションからlibsrtのlatency設定とか設定してみても全く効果が無いような感じなので、やはりffmpegに実装されているSRTはまだまだテスト段階の品物なのかもしれない。

【補足】

ちなみにomxでHWエンコした場合はこの遅延が6秒から12秒に増えました。

実施した処理については以下の通り。

PC→1920×1080/6MbpsでSRT送り込み→Raspi4でSRT受信して1280×720/2MbpsへダウンスケールしてRaspi3へSRT送り込み→Raspi3でSRT受信してHDMIモニターに出力

やはりRaspi上で処理するのが重いような気がする。

なお、昔GStreamerでもSRTをテストしましたが、あっちの方がまだマシだった気がする。どうやってビルドしたか忘れてしまったので、次回やったらまたメモとして残そうと思う。