🍆
ラズパイでSRT送信用の最小限のffmpegをビルドする
libsrtのスタティックリンクライブラリをビルド
$ cd src
$ apt install git
$ git clone https://github.com/Haivision/srt.git
$ cd srt
$ git tag
$ git checkout -b w1.4.4 v1.4.4
$ sudo apt install tclsh pkg-config cmake libssl-dev build-essential
$ ./configure --disable-shared
$ make -j`nproc`
$ sudo make install
ffmpegのコンフィグのときにエラーになるので、srt.pc
を以下のように修正しました。
$ sudo vi /usr/local/lib/arm-linux-gnueabihf/pkgconfig/srt.pc
--- /usr/local/lib/arm-linux-gnueabihf/pkgconfig/srt.pc.org 2022-05-28 17:56:04.086283035 +0900
+++ /usr/local/lib/arm-linux-gnueabihf/pkgconfig/srt.pc 2022-05-29 08:39:11.403720914 +0900
@@ -6,7 +6,8 @@
Name: srt
Description: SRT library set
Version: 1.4.4
-Libs: -L${libdir} -lsrt
+Libs: -L${libdir} -lsrt -lpthread -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -latomic
+Requires: openssl libcrypto
Libs.private: -lpthread -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc
Cflags: -I${includedir} -I${includedir}/srt
Requires.private: openssl libcrypto
pkg-config --libs srt
が以下のようになればOK。
$ pkg-config --libs srt
-L/usr/local/lib/arm-linux-gnueabihf -lsrt -lpthread -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -latomic -lssl -lcrypto
ffmpegのビルド
$ cd ..
$ git clone https://git.ffmpeg.org/ffmpeg.git
$ cd ffmpeg
$ git tag
$ git checkout -b w5.0.1 n5.0.1
./configure
に与えるオプションは以下の通り。
conf_small_srt.sh
./configure --prefix=/usr/local --extra-version=small-srt --toolchain=hardened \
--incdir=/usr/include/arm-linux-gnueabihf --enable-gpl \
--enable-static --disable-shared --disable-doc --disable-everything \
--enable-ffmpeg --disable-ffplay --disable-ffprobe \
--disable-autodetect --disable-swscale --disable-swresample \
--enable-demuxer=h264 --enable-muxer=mpegts --enable-parser=h264 \
--enable-protocol=file,pipe,libsrt --enable-libsrt
$ sh conf_small_srt.sh
$ make -j`nproc`
ffmpeg-small-srt のインストール
$ sudo cp ffmpeg /usr/local/bin/ffmpeg-small-srt
$ ffmpeg-small-srt -version
ffmpeg version n5.0.1-small-srt Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 10 (Raspbian 10.2.1-6+rpi1)
configuration: --prefix=/usr/local --extra-version=small-srt --toolchain=hardened --incdir=/usr/include/arm-linux-gnueabihf --enable-gpl --enable-static --disable-shared --disable-doc --disable-everything --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-autodetect --disable-swscale --disable-swresample --enable-demuxer=h264 --enable-muxer=mpegts --enable-parser=h264 --enable-protocol='file,libsrt' --enable-libsrt
libavutil 57. 17.100 / 57. 17.100
libavcodec 59. 18.100 / 59. 18.100
libavformat 59. 16.100 / 59. 16.100
libavdevice 59. 4.100 / 59. 4.100
libavfilter 8. 24.100 / 8. 24.100
libpostproc 56. 3.100 / 56. 3.100
余談
libsrtをビルドするときに、以下のようにするとsrt-live-transmit
の実行ファイルをリンクしたときのライブラリのオプションを調べることができます。
$ make --trace srt-live-transmit
これにより -latomic
が必要なことを見つけました。
使い方
関連
Discussion