nginx rtmp-module でHLS配信を実現すると、途中で映像が少し途切れる事があります。ひどい時には5sに一度というようなタイミングで起こります。これを防止するためにはサーバー側でバッファを持たせます。
うちの環境ではこれが最適のようです。もっと大きくバッファをとってもいいわけですが、あんまりバッファをとってしまうとリアルタイム性が薄れていきます。
buflen 1s;
サーバ側でのバッファタイムを意味します。マニュアルでデフォルト1000msとなっているのですが、明示的に1s設定すると、映像が途切れる現象が無くなりました。
rtmp {
server {
listen 1935;
buflen 1s;
drop_idle_publisher 5s;
publish_notify on;
access_log logs/rtmp_access.log;
wait_key on;
wait_video on;
sync 10ms;
application multi_jp {
live on;
record off;
#auth.phpに書かれたユーザ名・パスワードを配信ポイントに掲載しないと配信できないようにする
on_publish http://localhost/publishauth/auth.php;
notify_method get;
hls on;
hls_path /usr/local/nginx/html/hls;
hls_type live;
hls_variant _lw BANDWIDTH=320000;
hls_variant _md BANDWIDTH=576000;
hls_variant _hi BANDWIDTH=1600000;
}
}
}