本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
nginx でhls配信できるようになったのはいいが、じっくり映像を見ると、時々途切れる。切れ目はおそらくtsファイルの切れ目じゃないかなと思う。受信バーが伸びていくが、それがなかなか伸びず、再生位置がどんどん迫り、受信バーが無くなった時点で配信が途切れて「プツ」っという感じになり。最悪はバッファしているのかウェイティングの時間が1s〜5sくらいクルクル出てくる。
そこで、セッティングを変えたらだいぶましになった。
nginx.conf hlsの設定
application multi_jp { live on; record all manual; record_unique on; record_path /tmp/rectmp/jp; record_suffix _jp.flv; exec_record_done /usr/sbin/yamdi -i $path -o /tmp/record/jp/$filename; on_play http://localhost:8080/on_play; hls on; hls_path /usr/local/nginx/html/hls/jp; hls_nested on; # tsファイルの分轄サイズ キーフレームの倍数にする事 hls_fragment 15s; # m3u8ファイルに掲載する、分割tsファイルの長さhls_fragment15sで、playlist_length 1mならtsファイルは4つ掲載される hls_playlist_length 1m; # m3u8ファイルの一番最後に記載されているtsファイルから再生する hls_type live; hls_variant _lw BANDWIDTH=320000; hls_variant _md BANDWIDTH=576000; hls_variant _hi BANDWIDTH=2128000; }
hlsの設定だけでは、途切れが改善できなかったので、httpを吐くnginxの設定もチューニングした。
nginx.conf httpサーバのチューニング
参考
nginx最大パフォーマンスを出すための基本設定
nginx でKeepAliveを設定してみる
http://server-setting.info/centos/nginx-keepalive-setting.html
# Nginx本体のプロセス数は内部判定にまかせる worker_processes auto; # workerプロセスが最大に開けるファイル数の制限 worker_rlimit_nofile 100000; events { #一つのプロセスが開ける最大のコネクション数 worker_connections 2048; #できるだけクライアントからのリクエストを受け取る multi_accept on; use epoll; } http { include mime.types; #default_type application/octet-stream; # tuning for hls #エラー画面のnginxバージョン番号非表示 server_tokens off; #一つのデータパッケージにすべてのヘッダ情報を含む tcp_nopush on; #データをキャッシュしないでどんどん送信する tcp_nodelay on; # access_log off; #keep-aliveタイムアウト時間は少し短くしておく keepalive_timeout 10; #クライアントタイムアウト時間を少し短くする client_header_timeout 10; #クライアントタイムアウト時間を少し短くする client_body_timeout 10; #非アクティブのコネクションをクローズする reset_timedout_connection on; #クライアントへの送信タイムアウト send_timeout 10; #各種keyの共有メモリ設定 limit_conn_zone $binary_remote_addr zone=addr:5m; #keyの最大コネクション数 一つのアドレスから100コネクションをリクエスト limit_conn addr 100; default_type text/html; charset UTF-8; #転送内容をgzipで圧縮 gzip on; #圧縮gzip_httpバージョン gzip_http_version 1.0; #ie6圧縮禁止 gzip_disable "msie6"; #全てのプロキシも圧縮 gzip_proxied any; #gzip圧縮する最低サイズ(これより小さいデータは圧縮しない) gzip_min_length 1024; #圧縮レベル 1-9で圧縮可能 gzip_comp_level 6; #キャッシュをオープンする 同時最大数とキャッシュ時間の設定 open_file_cache max=100000 inactive=20s; #キャッシュの検知間隔時間 open_file_cache_valid 30s; #非アクティブファイルの最小ファイル数 open_file_cache_min_uses 2; #ファイルのエラー情報もキャッシュ open_file_cache_errors on; ############## }