自動化無しに生活無し

WEBとかAIとかLinux関係をひたすら書く備忘録系ブログ

Nginxにrtmp-moduleを加えてmake install。ffmpegでRTMP配信する映像をVLCで再生【ライブストリーミング再生】

  • 作成日時:
  • 最終更新日時:
  • Categories: インフラ
  • Tags: nginx rtmp
thumbnail

RTMPモジュールありのNginx(最新版)をmakeでインストールする。

https://nginx.org/en/download.html

最新版のnginxをインストールする

wget https://nginx.org/download/nginx-1.25.5.tar.gz
tar -zxvf nginx-1.25.5.tar.gz
cd nginx-1.25.5

DLして、解凍したnginxディレクトリの中で、rtmp-moduleをGitHubからクローン

git clone https://github.com/arut/nginx-rtmp-module.git

rtmp-moduleのパスを --add-module引数に含めてビルドする。

./configure --add-module=./nginx-rtmp-module
make
sudo make install 

これでインストールは完了したが、プロセスはまだ起動していない状態。127.0.0.1 へアクセスしても何も表示されない。

そこで、プロセスを起動する。

sudo /usr/local/nginx/sbin/nginx

http://127.0.0.1/ へアクセスして、nginxが起動すればOK

ただし、この方法だと、PCを再起動するたびに先のコマンドを実行して、手動でNginxを起動しなければならない。

Nginxをsystemdから自動起動させる

systemdを使ってNginxを自動起動させるように仕立てる。

まず、先程起動したnginxを停止させる

sudo killall nginx 

続いて、systemd のファイルを作る。

sudo vi /etc/systemd/system/nginx.service

内容は下記。

[Unit]
Description=nginx - high performance web server
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemdの再読込とnginx.serviceを自動起動させる。

sudo systemctl daemon-reload

sudo systemctl enable nginx

これで先程、make install した最新版のNginx(rtmp-moduleあり)が自動起動するようになった。

Nginxにて、RTMPの配信設定をする

下記から、設定ファイルを確認して

sudo vi /usr/local/nginx/conf/nginx.conf

RTMPの設定を追加する。

rtmp {
    server {
        listen 1935; # RTMPポート
        chunk_size 4096;

        application live {
            live on; 
            record off;
        }   
    }   
}

再度 restart する。statusも確認して、activeであれば、RTMPモジュールは追加されている。

sudo systemctl restart nginx 

sudo systemctl status nginx 

もし、ここでrtmpはないなどというエラーが出た場合は、rtmpモジュールのインストールに失敗していると言える。

ffmpegコマンドを使って、RTMPサーバーが正常に動いているかをチェックすることができる。

ffmpeg -f v4l2 -i /dev/video0 -f flv rtmp://127.0.0.1/live/1

参考: FFmpegを使ってUbuntuサーバーにUSBで接続されたウェブカメラで映像を録画する

VLCのネットワークから rtmp://127.0.0.1/live/1 へアクセスするとウェブカメラの映像が表示される。

ただし映像は10秒ほど遅れているが。

スポンサーリンク

シェアボタン

Twitter LINEで送る Facebook はてなブログ