2017年12月7日 星期四

自架 RTMP 並用 AverMedia GC500 和 VLC 做影像串流

紀錄不通過 youtube, facebook 之類的平台來做直播,自行使用 Docker 架設 rtmp 伺服器串流。

想要把 HDMI 之類的訊號源做傳輸,常用的是 Nginx-rtmp-module 這個套件啟動 rtmp 伺服器,然後讓串流軟體把串流訊號傳到 rtmp 伺服器,再讓播放軟體如 VLC 來播放 rtmp 串流訊號。

架設 RTMP 伺服器

首先,我嘗試成功的是用 Docker Hub 裡面的一個鏡像: Nginx-rtmp:
https://hub.docker.com/r/tiangolo/nginx-rtmp/

事實上只要使用指令:
docker run -d -p 1935:1935 --name nginx-rtmp tiangolo/nginx-rtmp

就可以打開串流伺服器,只要讓串流軟體訪問 rtmp://[伺服器位置]:1935/live,就可以進行串流,其中 Stream Key (串流金鑰),指的是在 "串流軟體端" 自己定義的一個串流金鑰,不是從主機端定義的;這個串流金鑰是讓 VLC 之類的播放軟體,對應到這樣的位置來播放:

rtmp://[伺服器位置]:1935/live/[串流金鑰文字]

所以假設你在串流軟體設定金鑰為: test ,那麼 VLC 就要用這個位置訪問串流:

rtmp://[伺服器位置]:1935/live/test

硬體端

硬體端的部分,我是使用 AVerMedia 公司的 GC500 遊戲影像串流盒,把擷取訊號拿出來。

串流軟體設定

OBS 之類的串流軟體都可以做到這件事,我想其他軟體都是通用的,不過在此是介紹使用 AVerMedia 硬體專屬軟體 RECentral 3 ,可以從他的官方網站下載。

在 RECentral 3 的串流軟體的 [串流平台] 選單,按下 Custom RTMP 這個選項,就會導引你到設定區域,在串流位置輸入:

rtmp://[伺服器位置]:1935/live

然後在金鑰的部分,輸入自己想要的金鑰,以 test 作為範例 (於下小節應用這個範例)。

播放串流

打開 VLC ,在 [媒體] 下選擇 [串流] ,然後在 [網路] 區塊輸入剛才的串流位置,是:

rtmp://[伺服器位置]:1935/live/test

然後在按鈕側邊的選項,下拉選單選擇 [播放],就會直接播放剛才軟體上傳的訊號。


Reference:
https://hub.docker.com/r/tiangolo/nginx-rtmp/
https://github.com/arut/nginx-rtmp-module/wiki/Directives
https://github.com/moiamond/dockerfiles/tree/master/nginx-rtmp/build
https://moiamond.github.io/post/使用-Docker-快速架設-RTMP-串流平台/
https://blog.gtwang.org/iot/raspberry-pi-nginx-rtmp-server-live-streaming/
https://sites.google.com/site/ageechen/work_notes/notes-about-media-server/set-up-media-server

沒有留言:

張貼留言

© ERIC RILEY , 自由無須告知轉貼
Background Japanese Sayagata by Olga Libby