👽

dockerを使ってgstreamerで新しいlibsrtを利用する

2022/05/23に公開

前回の記事で、中継サーバのgstreamerとlibsrtのバージョンは以下の通り。

$ gst-inspect-1.0 --version
gst-inspect-1.0 version 1.16.2
GStreamer 1.16.2
https://launchpad.net/distros/ubuntu/+source/gstreamer1.0
$ ls -l /usr/lib/aarch64-linux-gnu/libsrt.so.1
lrwxrwxrwx 1 root root 15 Mar 23  2020 /usr/lib/aarch64-linux-gnu/libsrt.so.1 -> libsrt.so.1.4.0

この記事を書いている時点でのlibsrtのリリースバージョンは1.4.4なので、けっこう古いものが使われています。

dockerを使ってubuntu 22.04の環境を作り出す

動かすスクリプトは以下の通り。

必要なネットワークのリソースは送信と受信を行う2つのUDPポートだけです。
このスクリプトは今後も修正していくと思うので、これを含むディレクトリをマウントするようにdockerを動かしてみることにしました。

Dockerfileとdocker-compose.yml

この2つのファイルを用意して、以下を実行するだけです。初回はdocker imageのビルドから行うので時間がかかりますが、2回目以降はすぐに起動します。

$ docker-compose up -d
$ docker-compose ps
       Name                     Command               State                                   Ports                                 
------------------------------------------------------------------------------------------------------------------------------------
srt_publisher001_1   /root/srt/srt_server.sh 70 ...   Up      0.0.0.0:7001->7001/udp,:::7001->7001/udp,                             
                                                              0.0.0.0:7002->7002/udp,:::7002->7002/udp                              
srt_publisher002_1   /root/srt/srt_server.sh 70 ...   Up      0.0.0.0:7003->7003/udp,:::7003->7003/udp,                             
                                                              0.0.0.0:7004->7004/udp,:::7004->7004/udp

これで以前と同様に配信をおこなうことができています。

動作しているlibsrtの確認

この中で使われているgstreamerとlibsrtのバージョンは以下の通り。

$ docker-compose exec publisher001 /usr/bin/gst-inspect-1.0 --version
gst-inspect-1.0 version 1.20.1
GStreamer 1.20.1
$ docker-compose exec publisher001 ls -l /usr/lib/aarch64-linux-gnu/libsrt-gnutls.so.1.4
lrwxrwxrwx 1 root root 22 Mar 13 10:28 /usr/lib/aarch64-linux-gnu/libsrt-gnutls.so.1.4 -> libsrt-gnutls.so.1.4.4

あまりに簡単でびっくりです。強いて代償をあげるとすれば、dockerのイメージとしてそれなりのストレージを消費していることくらいでしょうか。

$ docker images |grep koba/srt
koba/srt                              latest          5c836f7b8c32   6 hours ago    628MB

2022/06/15 修正

SRTサーバーの個数を簡単に増やせるようにポート番号をdocker-compose.ymlに集約するように修正しました。

Discussion