1. 程式人生 > 其它 >實時監控研究c#+nginx+rtmp(一)

實時監控研究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