🐕
ラズパイゼロのffmpegで録画しつつSRTで送信しリトライも行う
tee + fifo でリトライできる
今回はjetson nanoでなくてラズパイゼロを使用しています。
ffmpegで録画しつつSRTで送信するのはこの記事でやりました。
しかし、ネットワークが不調になったり、サーバが止まったりしたときに録画は継続されるのですが、その後ネットワークが復活してもSRTの送信は再開されません。
tee
muxer と fifo
muxerを組み合わせることで、録画を継続しつつネットワークが不調になったらリトライをして再接続するということが実現できました。
サーバを止めて、リトライされることを確認する
中継サーバで
$ 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
サービスを止める。
$ docker-compose stop publisher001
Stopping srt_publisher001_1 ... done
するとラズパイゼロのffmpegのログは以下のようになります。
[srt @ 0xab100470] [error] Connection to srt://xx.yy.zz.ww:7001 failed: Input/output error
[fifo @ 0x34937e0] [error] Error opening srt://xx.yy.zz.ww:7001: Input/output error
[srt @ 0xab100680] [error] Connection to srt://xx.yy.zz.ww:7001 failed: Input/output error
[fifo @ 0x34937e0] [error] Error opening srt://xx.yy.zz.ww:7001: Input/output error
(IPアドレスはxx.yy.zz.ww
に置き換えています)
サーバ側のサービスを再開する。
$ docker-compose start publisher001
Starting publisher001 ... done
ffmpegのエラーのログが止まりSRTの接続が再開します。この間も録画は継続しています。
参考
関連
Discussion