最終的にストリーミングキーにパスワードを入れる簡易認証について書くのですが、全て一つの投稿にすると長くなるのでまずは前段の環境構築から。
[追記] RTMPSできないと中間者攻撃対策できなくて、nginx-rtmp-moduleで対応していないということもあり一旦保留。
RTMPについて
ストリーミングでデータをやり取りするためのプロトコルで、ここでは映像をライブストリーミング(生放送)するために使用する。
通常利用するポートはTCP 1935番。
NginxでRTMPを扱うためのモジュールが公開されており、ソースに追加してMakeすることで利用可能。
確認環境
- ubuntu 16.04
インストール手順
必要パッケージのインストール
makeするために必要なものを一通り準備。
sudo aptitude install build-essential libpcre3 libpcre3-dev libssl-dev unzip
Nginxのソースとrtmpモジュールをダウンロードしてmake/install
mkdir -p ~/work/nginx
cd ~/work/nginx
wget http://nginx.org/download/nginx-1.11.7.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
tar -zxvf nginx-1.11.7.tar.gz
unzip master.zip
cd nginx-1.11.7/
./configure --user=www-data --group=www-data --with-http_ssl_module --with-http_realip_module --add-module=../nginx-rtmp-module-master
make
sudo make install
サーバ起動時に自動起動するためSystemdにサービスとして登録
sudo vi /lib/systemd/system/nginx.service
/lib/systemd/system/nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Nginxの設定
RTMPと、テスト用のプレーヤーページを用意。
sudo vi /usr/local/nginx/conf/nginx.conf
/usr/local/nginx/conf/nginx.conf
worker_processes 1;
user www-data www-data;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
application app {
live on;
record off;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name localhost;
#デフォルトのルートディレクトリは /usr/local/nginx/html
#変えるのめんどいのでそのまま使う
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
index index.html index.htm;
}
}
テスト用のプレーヤーページを作成
テストなのでCDNのvideo.jsを利用させていただき簡易的に作る。
sudo vi /usr/local/nginx/html/live.html
/usr/local/nginx/html/live.html
<!DOCTYPE html>
<html lang="en" class="">
<head>
<title>Test Live</title>
<link href="//vjs.zencdn.net/5.11/video-js.min.css" rel="stylesheet">
<script src="//vjs.zencdn.net/5.11/video.min.js"></script>
</head>
<body>
<video id="player" class="video-js vjs-default-skin" height="450" width="800" controls autoplay preload="auto">
<source src="rtmp://(サーバのIP or ドメイン)/app/StreamKey" type='rtmp/mp4' />
</video>
<script>
var player = videojs('#player');
</script>
</body>
</html>
一応、所有者を変更しておく。
sudo chown www-data:www-data /usr/local/nginx/html/live.html
Nginxの起動と自動起動設定
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
OBSで配信する際のURL指定
OBSClassicを使う場合は以下の値をいい感じに設定。
設定 -> 放送設定
FMS URL : rtmp://192.168.30.16/app
プレイパス/ストリームキー : StreamKey
使用方法は別途調べてください。
視聴
HTML5が見れるWEBブラウザで以下を開く。
http://(サーバのIP or ドメイン)/live.html
もちろん、配信していないと何も再生されないので注意。
コメント