🍆

ラズパイでSRT送信用の最小限のffmpegをビルドする

2022/05/29に公開

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 が必要なことを見つけました。

使い方

https://zenn.dev/tetsu_koba/articles/1b5b2689fa8b54

関連

https://zenn.dev/tetsu_koba/articles/129ac2c6415515

Discussion