實時監控研究c#+nginx+rtmp(一)
這兩週花了時間研究相關監控實時傳輸,終於打通了流程。
一、相關資料研究記錄
從網路上接收視訊時首先要解協議(RTSP/RTMP/HTTP),然後是解格式(MKV,RMVB),之後才是將視訊(H264)和音訊(AAC)格式資料分別解碼為影象(RGB/YUV)和聲音(PCM),再根據時間戳同步播放。
RTSP+RTP主要用於IPTV,原因是傳輸資料使用的是UDP,在網路環境比較穩定的情況下,傳輸效率是比較高的;
RTMP主要用於網際網路音視訊傳輸,它使用的是TCP傳輸,因為網際網路環境相對較差,採用RTMP保證了視訊的傳輸質量,但是其傳輸延遲相對較高,傳輸效率相對較低。
直播服務普遍採用了RTMP作為流媒體協議,FLV作為封裝格式,H.264作為視訊編碼格式,AAC作為音訊編碼格式。FLV是RTMP使用的封裝格式,H.264是當今實際應用中編碼效率最高的視訊編碼標準,AAC則是當今實際應用中編碼效率最高的音訊編碼標準。
librtmp是RTMP協議的實現,可以使用librtmp來實現協議的解析和資料的收發。直播伺服器可以基於nginx+rtmp實現;直播客戶端方面採用librtmp負責推流,FFmpeg負責編碼;收看客戶端採用VLC即可,因為VLC本身既可以解析RTMP流,又可以解析編碼後的視訊資料。
二、nginx部署
阿里雲/騰訊雲 window系統部署
下載連結:nginx官網下載相關配置 複製到相關伺服器上nginx_1.7.11.3_Gryphon
相關conf檔案下nginx.conf 相關配置和埠根據專案配置調整
1.rtmp配置:
2.http設定:
預設80埠可能跟其他應用程式衝突 建議替換
這樣配置就好了~
輸入cmd定位到相關檔案位置 ,執行nginx.exe -c conf\nginx.conf 返回無返回錯誤則表示安裝完成
這時在瀏覽器輸入相關配置地址:localhost:8082 出現如下資訊即nginx完成
三、測試RTMP推拉流
1.推流
準備mp4檔案
var in_filename = "F:\\1.mp4"; //輸入URL(Input file URL)
var out_filename = "rtmp://192.168.73.1:1935/live/hunantv";//輸出 URL(Output URL)[RTMP]
讀取本地檔案的方式推送媒體資料到RTMP伺服器(ReadLocalFile_PushStreamToRmtp方法傳參in_filename、out_filename)
2.拉流
下載VLC Media Player
監聽傳輸過來的資料並顯示--親測ok
或者是使用程式碼來測試 使用winform 輸入連結進行監聽
----親測ok