2020-05-01 自架nginx rtmp server (使用Windows系統)

紀錄一下rtmp server架設方式(使用Windows系統)
如果你有Linux主機, 建議改用srs會比較好.

2020-05-09 更新, 改用VLC Video Source


小宗宗發現最近因為疫情的關係網路直播正熱門. 如果VJ/DJ需要遠端合作的話就會需要用到rtmp server.

原理是這樣的, DJ(發送端)把影音訊號送去VJ(接收端)那邊, 然後再從VJ(接收端)那邊整合畫面後再用OBS送去Twitch.
其中VJ(接收端)的電腦需要安裝rtmp server去收遠端DJ(發送端)用OBS送來的rtmp訊號.
再從VJ(接收端)同一台電腦上的OBS做影像疊加後再送去Twitch之類的實況網站.

後面原理就不提了, 分三個階段來設定
1. rtmp server架設
2. NAT 開啟Port forwarding
3. OBS設定

1. rtmp server架設

一聽要架設什麼server感覺就很難, 其實不會的.
rtmp server只要下載nginx程式解壓縮, 設定config檔, 執行.
完成!

https://github.com/illuspas/nginx-rtmp-win32
這裡下載檔案
選右邊綠色的Clone or download再選Download ZIP就可以下載了.

然後解壓縮到一個你喜歡的資料夾下, 找底下conf\nginx.conf這個檔案, 把裡面改成這樣.

worker_processes  auto;

error_log  logs/error.log info;

events {
    worker_connections  1024;
}

rtmp {
    server {
        listen 1935;

        application live1 {
            live on;
        }
    }
}

http {
    server {
        listen      8080;

        location / {
            root html;
        }

        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
            root html;
        }

        location /hls {
            #server hls fragments
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            alias temp/hls;
            expires -1;
        }
    }
}

然後執行nginx.exe這時rtmp server就啟動了
如果要停止server請執行stop.bat

01_07

第一次執行Windows會問你是否允許nginx連網, 兩個都打勾選允許就可以了.

server有附一個rtmp監控網頁可以即時監控rtmp狀態, 請在執行nginx的主機上用瀏覽器進入下面的網址.
http://127.0.0.1:8080/stat

01_01

2. NAT 開啟Port forwarding

如果家裡有裝Router的話, 要進去你的Router裡面開啟Port forwarding. 因為每家Router操作不同, 所以詳細請參考你的Router說明書

01_02
要把port 1935轉到你這台server的IP. 照片裡的192.168.0.88只是範例, 請改成你nginx主機的正確IP位置.

01_03
你可能需要在你Router上的DHCP伺服器把你的這台nginx電腦設定成固定IP會比較方便, 不然一段時間IP就會不同. Port forwarding設定會失效.

3. OBS設定

01_04
最後這個最簡單. DJ發送端的OBS去設定裡的Stream
把OBS Service設定成Custom…
Server設定成rtmp://VJ(接收端)電腦的對外IP address/live1
(照片裡的192.168.0.88跟stream key是範例, 請改成接收端提供的資訊)
Stream Key可以隨意設定, 但記得兩邊要講好設成一樣的.

因為接收端需要給發送端自己的對外IP, 如果不知道可以去下面這些網頁找到.
https://www.whatismyip.com.tw
http://www.myipaddress.com/show-my-ip-address/

01_05

01_06

01_08
然後在VJ(接收端)的OBS加一個VLC Video Source後, Input設定成rtmp://127.0.0.1/live1/發送端的Stream Key
就會看到畫面了

如果OBS找不到VLC Video Source的話, 應該是沒安裝VLC的關係
https://www.videolan.org/vlc/index.html

Media Source之前實測發現不太穩定, 不建議使用.

補充:
1. 營運級的通常會用效率更高的simple rtmp server (SRS), 但目前SRS不支援Windows作業系統, 需另外準備一台Linux主機.
2. 如果rtmp server沒有要使用時建議把NAT的Port forwarding關掉增加安全性