🏝️
jetson nanoのgstreamerでSRTを使えるようにする
jetson nanoのgstreamerにはSRTのエレメントが含まれていなかったので、追加しました。
libsrtのビルドとインストール
$ git clone https://github.com/Haivision/srt.git
$ cd srt
タグを確認。
$ git tag
...
v1.4.3
v1.4.3-rc.0
v1.4.3-rc.1
v1.4.4
v1.4.4-rc.0
v1.4.4-rc.1
v1.5.0-rc.0
最初はv1.4.4で試したが、試行錯誤の結果、v1.4.1を使うことにした。(後述)
$ git checkout -b w1.4.1 v1.4.1
ビルドしてインストール。
$ sudo apt-get install tclsh pkg-config cmake libssl-dev build-essential
$ ./configure
$ make -j`nproc`
$ sudo make install
$ sudo ldconfig
/usr/local/lib
, /usr/local/include
に必要なファイルがインストールされた。
gstreamerのビルド
SRTのプラグインはgst-plugins-bad
に入っている。
$ git clone git://anongit.freedesktop.org/gstreamer/gst-plugins-bad
cd gst-plugins-bad
現在使用しているgstreamerのバージョンを確認。
$ gst-inspect-1.0 --version
connect /tmp/.X11-unix/X0: No such file or directory
nvbuf_utils: Could not get EGL display connection
gst-inspect-1.0 version 1.14.5
GStreamer 1.14.5
https://launchpad.net/distros/ubuntu/+source/gstreamer1.0
$ git checkout -b w1.14.5 1.14.5
$ NOCONFIGURE=1 ./autogen.sh
$ ./configure
NOCONFIGURE=1
をつけて、別に./configure
を実行したのは、ドキュメントなど今回は必要のないものまでビルドしないため。
srtだけをビルドする。
$ cd ext/srt
$ make
インストール
$ cd .libs/
$ sudo install -m 644 libgstsrt.so /usr/lib/aarch64-linux-gnu/gstreamer-1.0/
gstreamerにsrtが追加されたことの確認。
$ gst-inspect-1.0 |grep srt:
srt: srtclientsrc: SRT client source
srt: srtserversrc: SRT Server source
srt: srtclientsink: SRT client sink
srt: srtserversink: SRT server sink
もし入っていなかったら、以下を実行してキャッシュを削除してから試す。
$ rm ~/.cache/gstreamer-1.0/registry.aarch64.bin
$ gst-inspect-1.0 |grep srt:
libsrtを1.4.1に戻した理由
GStreamer 1.14.5 ではSRTO_TSBPDDELAY
の定数を使用しているが、libsrt v1.4.4ではこれが定義されておらずコンパイルエラーになる。
これは想定しているlibsrtのバージョンが合わないため。どこまで戻すべきかをgit diff
で探した。
$ git diff v1.4.1 v1.4.4 |grep SRTO_TSBPDDELAY
- SRTO_TSBPDDELAY = 23, // DEPRECATED. ALIAS: SRTO_LATENCY
-#define SRT_TSBPDDELAY SRTO_TSBPDDELAY
関連
Discussion