rtmdumpを再インストール

端末が入れ替わって環境構築がたいへん。サーバの入れ替えと同時にやるものじゃありませんね。
この日はrtmpdumpをインストール。rtmpdumpはradikoの録音に必要です。仕事、、、とは微妙に関係があります。

rtmpdumpのソースをgitで同期

$ git clone git://git.ffmpeg.org/rtmpdump 

 
gitがないとか言われるので、apt-getでさくりとインストール。

makeする

昔の記事を参考にしてmake。最初にインストールしたのは2010年。もう七年も前か。

$ make SYS=posix
make[1]: ディレクトリ '/home/hoge/rtmpdump/librtmp' に入ります
gcc -Wall   -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL  -O2 -fPIC   -c -o rtmp.o rtmp.c
rtmp.c:60:25: fatal error: openssl/ssl.h: そのようなファイルやディレクトリはありません
compilation terminated.
<ビルトイン>: ターゲット 'rtmp.o' のレシピで失敗しました
make[1]: *** [rtmp.o] エラー 1
make[1]: ディレクトリ '/home/hoge/rtmpdump/librtmp' から出ます
Makefile:76: ターゲット 'librtmp/librtmp.a' のレシピで失敗しました
make: *** [librtmp/librtmp.a] エラー 2

なんかエラーです。openssl/ssl.hがないそうです。インストールします。

libssl-devをインストール

$ sudo apt-get install libssl-dev 

ちゃんと入りました。

$ ls -l /usr/include/openssl/ssl.h 
-rw-r--r-- 1 root root 149342  1月 31 01:11 /usr/include/openssl/ssl.h

再度make

$ make SYS=posix
make[1]: ディレクトリ '/home/hoge/rtmpdump/librtmp' に入ります
gcc -Wall   -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL  -O2 -fPIC   -c -o rtmp.o rtmp.c
rtmp.c: In function ‘RTMP_ReadPacket’:
rtmp.c:3555:7: warning: variable ‘didAlloc’ set but not used [-Wunused-but-set-variable]
   int didAlloc = FALSE;
       ^
gcc -Wall   -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL  -O2 -fPIC   -c -o log.o log.c
gcc -Wall   -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL  -O2 -fPIC   -c -o amf.o amf.c
gcc -Wall   -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL  -O2 -fPIC   -c -o hashswf.o hashswf.c
gcc -Wall   -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL  -O2 -fPIC   -c -o parseurl.o parseurl.c
ar rs librtmp.a rtmp.o log.o amf.o hashswf.o parseurl.o
ar: librtmp.a を作成しています
gcc -shared -Wl,-soname,librtmp.so.1  -o librtmp.so.1 rtmp.o log.o amf.o hashswf.o parseurl.o  -lssl -lcrypto -lz 
ln -sf librtmp.so.1 librtmp.so
make[1]: ディレクトリ '/home/hoge/rtmpdump/librtmp' から出ます
gcc -Wall   -DRTMPDUMP_VERSION=\"v2.4\"   -O2   -c -o rtmpdump.o rtmpdump.c
gcc -Wall  -o rtmpdump rtmpdump.o -Llibrtmp -lrtmp -lssl -lcrypto -lz  
gcc -Wall   -DRTMPDUMP_VERSION=\"v2.4\"   -O2   -c -o rtmpgw.o rtmpgw.c
gcc -Wall   -DRTMPDUMP_VERSION=\"v2.4\"   -O2   -c -o thread.o thread.c
gcc -Wall  -o rtmpgw rtmpgw.o thread.o -lpthread -Llibrtmp -lrtmp -lssl -lcrypto -lz  
gcc -Wall   -DRTMPDUMP_VERSION=\"v2.4\"   -O2   -c -o rtmpsrv.o rtmpsrv.c
gcc -Wall  -o rtmpsrv rtmpsrv.o thread.o -lpthread -Llibrtmp -lrtmp -lssl -lcrypto -lz  
gcc -Wall   -DRTMPDUMP_VERSION=\"v2.4\"   -O2   -c -o rtmpsuck.o rtmpsuck.c
gcc -Wall  -o rtmpsuck rtmpsuck.o thread.o -lpthread -Llibrtmp -lrtmp -lssl -lcrypto -lz  
$

ちゃんとmakeできました。

make install

$ sudo make install
make[1]: ディレクトリ '/home/hoge/rtmpdump/librtmp' に入ります
make[1]: 'all' に対して行うべき事はありません.
make[1]: ディレクトリ '/home/hoge/rtmpdump/librtmp' から出ます
mkdir -p /usr/local/bin /usr/local/sbin /usr/local/man/man1 /usr/local/man/man8
cp rtmpdump /usr/local/bin
cp rtmpgw rtmpsrv rtmpsuck /usr/local/sbin
cp rtmpdump.1 /usr/local/man/man1
cp rtmpgw.8 /usr/local/man/man8
make[1]: ディレクトリ '/home/hoge/rtmpdump/librtmp' に入ります
sed -e "s;@prefix@;/usr/local;" -e "s;@libdir@;/usr/local/lib;" \
	-e "s;@VERSION@;v2.4;" \
	-e "s;@CRYPTO_REQ@;libssl,libcrypto;" \
	-e "s;@PUBLIC_LIBS@;;" \
	-e "s;@PRIVATE_LIBS@;;" librtmp.pc.in > librtmp.pc
mkdir -p /usr/local/include/librtmp /usr/local/lib/pkgconfig /usr/local/man/man3 /usr/local/lib
cp amf.h http.h log.h rtmp.h /usr/local/include/librtmp
cp librtmp.a /usr/local/lib
cp librtmp.pc /usr/local/lib/pkgconfig
cp librtmp.3 /usr/local/man/man3
cp librtmp.so.1 /usr/local/lib
cd /usr/local/lib; ln -sf librtmp.so.1 librtmp.so
make[1]: ディレクトリ '/home/hoge/rtmpdump/librtmp' から出ます