1. 程式人生 > >海康IPC+NVR+EasyDarwin+EasyPusher+VLC實現Web實時播放RTSP視訊

海康IPC+NVR+EasyDarwin+EasyPusher+VLC實現Web實時播放RTSP視訊

上篇部落格是用ffmpeg+nginx實現web播放rtsp視訊,原理是將rtsp轉碼成rtmp格式,再用flash外掛播放

由於專案硬體條件有限,轉碼基本就不考慮了,因此只能直接播放獲取到的rtsp流,並且整個網路環境只能有一個外網IP,因此思路就是能否通過NVR去找同一網段內的IPC,如何搭建NVR和IPC的環境這裡就不作介紹,必須保證NVR可以看到網段內各攝像頭,以及關閉平臺接入功能(這個是重點,我就一直卡在這裡很久,具體原因未知,希望有懂的大神能指教)

通過NVR查詢IPC地址如下:

rtsp://admin:[email protected]/h264/ch33/main/av_stream

這個IP地址是NVR的(我的NVR是舊版的,所以訪問地址也只能有舊的地址),格式和直接訪問IPC沒什麼不同,需要注意的是在舊版NVR中,ch33是IP通道的第一個通道,我們在NVR的通道設定中是可以設定IPC的通道編號的

一、準備

1.EasyDarwin

2.EasyPusher

3.VLC

二、啟動EasyDarwin服務

EasyDarwin服務是一個轉發服務,可接受RTSP源並將其轉發到指定地址

將下載到的rar檔案解壓,進入資料夾後進入EasyDarwin資料夾

1)配置EasyDarwin

進入解壓後的資料夾-->EasyDarwin資料夾-->開啟easydarwin.xml檔案,這是EasyDarwin的配置檔案,我們主要進來配置EasyDarwin的埠:

ctrl+f找到如圖所示節點,並配置兩個埠(確保兩個埠未被佔用,檢視方法cmd:netstat -a


修改後儲存檔案即可

2)雙擊EasyDarwin資料夾中的start.bat,出現如下介面,說明EasyDarwin服務啟動成功


這時,EasyDarwin就可接受RTSP源,並轉發出去,那麼下一步就是將源推送到EasyDarwin服務了

二、使用EasyPusher推送RTSP源

搭建好EasyDarwin,這一步就將RTSP源推送到EasyDarwin,我們使用EasyPusher進行推送

下載EasyPusher原始碼後,使用vs2010開啟其中的EasyPusher_RTSP,編譯後,找到EasyPusher_RTSP\Debug\EasyPusher_RTSP.exe這個檔案

這個檔案就是一個推送RTSP源的工具,我們要做的就是在自己的專案中用程式碼開啟這個檔案並傳入引數,實現RTSP源的推送(我只是個會C#的小白)


使用c#開啟.exe檔案很容易,使用ProcessStartInfo類,在System.Diagnostics名稱空間下,我們需要注意的是arguments引數的填寫:

-d:接受推送的服務IP地址,即我們在上一步中啟動EasyDarwin服務的電腦的IP地址

-p:接受推送的服務埠,即我們在上一步中配置的EasyDarwin的rtsp_port的埠號

-n:流名稱,我們可為每一個rtsp流起一個唯一的名稱,這個隨意取

-u:rtsp流源,即我們通過NVR訪問IPC的rtsp協議地址  rtsp://admin:[email protected]/h264/ch33/main/av_stream

執行以上程式碼,我們可看到如下介面啟動


到這一步,說明我們推送的流已經成功到達EasyDarwin,我們可以通過訪問EasyDarwin訪問到IPC的rtsp流,訪問地址就是rtsp://easydarwin服務IP:easydarwin服務埠/流名稱,如rtsp://192.168.15.28:554/ipc1,將此地址放到vlc中播放,測試是否成功

到此,使用EasyDarwin系列工具搭建rtsp視訊直播完成

注意:如果同時有多個rtsp源需要轉發,可開啟多次EasyPusher,也可自行修改EasyPusher_RTSP的原始碼實現,由於我不會c++,因此只能用前一種方式了,希望有c++大神能幫助修改原始碼,實現多源轉發