1. 程式人生 > >基於EasyIPCamera實現的RTSP跨平臺拉模式轉發流媒體伺服器

基於EasyIPCamera實現的RTSP跨平臺拉模式轉發流媒體伺服器

本文轉自部落格:http://blog.csdn.net/xinlanbobo/article/details/53224445

上一篇部落格《EasyIPCamera通過RTSP協議接入海康、大華等攝像機,摒棄私有SDK接入弊端》簡單介紹了自己的需求,並對EasyIPCamera_RTSP進行編譯、執行。本篇部落格針對EasyIPCamera_RTSP進行二次開發,增添讀取配置檔案、讀取資料庫的功能,將EasyIPCamera_RTSP打造成為簡單的RTSP流媒體伺服器。

1. 讀取配置檔案(讀資料庫道理類似) 
Win32下,讀取INI配置檔案非常簡單,其中我的配置檔名為“EasyIPCamera_RTSP.ini”,具體內容如下:

[RunMode]
;單機模式、連資料庫模式
Mode = 單機
;資料庫服務地址
DBSIP = 192.168.1.24
DBSUserName = root
DBSPassword = 123456
[IPC0]
IPCName=測試1
;ID號為必填項,客戶端請求時傳入此ID即可
IPCID=1
;IP地址為必填項
IPCIP=192.168.1.30
;RTSP埠為必填項,一般預設為554即可
IPCPort=554
;攝像機使用者名稱為必填項
UserName=admin
;攝像機密碼為必填項
Password=12345
RtspUrl=rtsp://admin:12345@192.168
.1.30:554
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

具體讀取配置檔案程式碼如下:

char chRunMode[MAX_PATH];  
::GetPrivateProfileStringA("RunMode", "Mode", "單機", chRunMode, MAX_PATH, ".\\EasyIPCamera_RTSP.ini");
  • 1
  • 2
  • 1
  • 2

上述程式碼非常簡單,通過讀取配置檔案[RunMode]中的Mode欄位,來確定程式的執行模式。“單機”模式就是通過配置檔案中的[IPCx]欄位生成攝像機連線串資訊,“資料庫”模式就是將相關IPC連線串資訊存入資料庫,通過資料庫服務讀取。 
2. 初始化所有通道資訊

 
根據配置檔案或者資料庫中的相關欄位,生成的IPC連線串資訊需要一次性初始化至 RTSP_SOURCE_CHANNEL_T channel[MAX_CHANNEL_NUM];

for (int i=0; i < MAX_CHANNEL_NUM; i++)
{
  channel[i].id = i;
  sprintf(str, "IPC%d", i);
  ::GetPrivateProfileStringA(str, "IPCID", "", buf, MAX_PATH, ".\\EasyIPCamera_RTSP.ini");
  if (buf[0] == '\0')
  {
     continue;
  }
  sprintf(channel[i].name, "channel=%s", buf);
  char ipcRtspUrl[MAX_PATH] = {0};
  ::GetPrivateProfileStringA(str, "RtspUrl", "", ipcRtspUrl, MAX_PATH, ".\\EasyIPCamera_RTSP.ini");
  char rtspUrl[512] = {0};
  sprintf_s(rtspUrl, "%s", ipcRtspUrl);
  channel[i].sourceType = SOURCE_TYPE_RTSP;
  strcpy(channel[i].source_uri, rtspUrl);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

通過上面的迴圈,一次性填充了所有通道,這樣EasyIPCamera_RTSP就可以作為服務接收不同攝像機的請求了。 
3. 視訊請求實現 
假如EasyIPCamera_RTSP執行在192.168.1.155上面,則使用VLC客戶端請求時需要填入如下格式的RTSP URL: 
rtsp://192.168.1.155:8554/channel=IPCID 
配置檔案中的 IPCID在這裡就不受原始碼的限制了(原有是程式碼寫死的)。 
4.部署 
將EasyIPCamera_RTSP.exe程式,EasyIPCamera_RTSP.ini ,libEasyIPCamera.dll , libEasyRTSPClient.dll 放在同一資料夾中,同時放入msvcp100.dll和msvcr100.dll(Visual Studio 2010的動態連結庫),應該就可以在任意的Windows系統主機上運行了。 
是不是非常簡單,僅僅需要4步,就能將EasyIPCamera打造成為一個“ RTSP服務+流媒體轉發” 的伺服器!

下一步,我們還可以使用EasyRTSPClient作為測試工具,批量、迴圈連斷EasyIPCamera_RTSP.exe,來測試該服務的穩定性、併發性。 
大家趕快行動起來,領略一下EasyDarwin開源專案的魅力吧!


相關推薦

基於EasyIPCamera實現RTSP跨平臺模式轉發媒體伺服器

本文轉自部落格:http://blog.csdn.net/xinlanbobo/article/details/53224445上一篇部落格《EasyIPCamera通過RTSP協議接入海康、大華等攝像機,摒棄私有SDK接入弊端》簡單介紹了自己的需求,並對EasyIPCame

用Darwin開發RTSP級聯伺服器(模式轉發)(附原始碼)

QTSS_Error DoDescribe(QTSS_StandardRTSP_Params* inParams) { char* theUriStr = NULL; QTSS_Error err = QTSS_GetValueAsString(inParams->inRTSPRequest,

javaCV開發詳解之4:轉實現(也可作為本地收器、推器,新增新增圖片及文字水印,視訊影象幀儲存),實現rtsp/rtmp/本地檔案轉發到rtmp媒體伺服器(基於javaCV-FFMPEG)

javaCV系列文章: 補充篇: 歡迎大家積極開心的加入討論群 javacpp-ffmpeg: 前言: 本章基於javaCV實現轉流器和收流器功能,測試採用監控rtsp地址轉發至rtmp伺服器地址 新增openCV儲存圖片功能。 補充:

基於CentOS實現LVS的nat模式和DR模式

linux lvs nat dr關於LVS的錯誤總結見以下:nat模式:http://amelie.blog.51cto.com/12850951/1979172DR模式:http://amelie.blog.51cto.com/12850951/1979437來自於某國內名企架構師的說法——LVS學好了,網

基於c++實現RTSP/RTMP推元件PushStream簡介

技術在於交流、溝通,轉載請註明出處並保持作品的完整性。 原文:https://blog.csdn.net/hiwubihe/article/details/84639975  [本系列相關文章]   本篇介紹一個基於C++開發的RTSP/RTMP推流元件Pus

基於EasyNVR攝像機無外掛直播媒體伺服器實現類似於單點登入功能的免登入直播功能

提出問題 EasyNVR是一套攝像機無外掛直播的流媒體伺服器軟體,他可以接入各種各樣的攝像機,再經過轉化統一輸出無外掛化直播的RTMP、HLS、HTTP-FLV流,同時,EasyNVR為了資料安全,提供了鑑權功能,可以配置成只有登入後才能直播觀看: 但這個時候問題又來了,很多企

javaCV開發詳解之2:推實現,推本地攝像頭視訊到媒體伺服器以及攝像頭錄製視訊功能實現(基於javaCV-FFMPEG、javaCV-openCV)

javaCV系列文章: 補充篇: 歡迎大家積極開心的加入討論群 javacpp-ffmpeg: 前言: 本章將在上一章的基礎上,增加視訊推流到流媒體伺服器和視訊錄製的功能; 功能:實現邊播放邊錄製/推流,停止預覽即停止錄製/推流 提示:

搭建基於nginx-rtmp-module的媒體伺服器

1.業務流程圖   2.軟體下載   2.1 windows下載obs   2.2 linux 安裝nginx(附加rtmp模組)      1.cd /usr/local      2.mkdir nginx      3.cd nginx      4.wget 

[轉]javaCV開發詳解之5:錄製音訊(錄製麥克風)到本地檔案/媒體伺服器(基於javax.sound、javaCV-FFMPEG)

本文轉載自部落格:https://blog.csdn.net/eguid_1/article/details/52702385 ------------------------------------------------------------------------------------

基於SRS搭建RTMP直播媒體伺服器

軟體定位 SRS 定位是運營級的網際網路直播伺服器叢集,追求更好的概念完整性和最簡單實現的程式碼。 運營級:商業運營追求極高的穩定性、良好的系統對接、錯誤排查和處理機制。譬如日誌檔案格式、reload、系統 HTTP 介面、提供 init.d 指令碼、轉發、轉碼和邊緣回多源站

利用nginx與nginx-rtmp-module搭建媒體伺服器實現直播

轉自:https://www.cnblogs.com/suiyuewuxin/p/7256972.html 使用環境是centos 7.0+nginx;可以實現簡單的流媒體服務。 先下載nginx-rtmp-module拓展: nginx-rtmp-module的官方github地址:h

用NodeJS/express-4.0實現的靜態檔案伺服器(serveStatic外掛直接支援HTTP Range請求,因此可用來做mp4媒體伺服器

var express = require('express'), serveIndex = require('serve-index'), //只能列表目錄,不能下載檔案? serveStatic = require('serve-stat

基於 SRS+NG 搭建 HLS 直播媒體伺服器

協議介紹 SRS 支援 HLS/RTMP 兩種成熟而且廣泛應用的流媒體分發方式。 RTMP 指 Adobe 的 RTMP ( Realtime Message Protocol ),廣泛應用於低延時直播,也是編碼器和伺服器對接的實際標準協議,在 PC(Flash)上有最佳觀看

如何自己實現一套EasyNVR這樣的無外掛媒體伺服器

EasyNVR流媒體解決方案 EasyNVR能夠通過簡單的網路攝像機通道配置,將傳統監控行業裡面的高清網路攝像機IP Camera、NVR等具有RTSP協議輸出的裝置接入到EasyNVR,EasyNVR能夠將這些視訊源的音視訊資料進行拉取,轉換為RTMP/HLS,進行全平臺終端H5直

ngnix+rtmpModule+ffmpeg實現直播媒體伺服器,並於java後臺關聯

1、ngnix+rtmpModule+ffmpeg安裝配置 1.1、安裝環境 1.2、ngnix安裝 ngnix必要庫安裝 yum -y install openssl-devel pcre pcre-devel zlib zlib-

基於Nginx+nginx-rtmp-module+ffmpeg搭建rtmp、hls媒體伺服器

Nginx及nginx-rtmp-module安裝新建目錄mkdir /usr/local/mginx下載cd /usr/local/nginx wget http://nginx.org/download/nginx-1.12.2.tar.gz wget https://c

最新海康攝像機、NVR、媒體伺服器、回放取RTSP地址規則說明

本文件主要介紹海康威視裝置預覽、回放、流媒體取流的RTSP URL和IE直接預覽、回放的HTTP URL。RTSP為取流協議,取到碼流後需要解碼顯示,可以通過VLC播放器進行測試,IE等瀏覽器網頁不支援RTSP協議直接取流預覽或者回放。網頁上需要跳過登入介面直接訪問我們裝置的

obs nginx-rtmp-module搭建媒體伺服器實現直播 ding

歡迎大家來此瀏覽,希望大家一塊在此學習,共同交流進步。 接下來我就簡單跟大家介紹一下利用nginx來搭建流媒體伺服器。 我選擇的是騰訊雲伺服器 1、下載nginx-rtmp-module: 使用命令: git clone https://github.com/

通過攝像機視訊裝置或者媒體伺服器SDK獲取到資料轉換成RTMP實現網頁/手機微信播放

寫這篇部落格主要是為了給新入門的流媒體開發者解惑,現在看到各種開發者的需求:網頁播放RTSP攝像機、微信播放RTSP攝像機、網頁播放攝像機SDK輸出的視訊流、網頁播放第三方流媒體平臺輸出的視訊流、包括Github有一些所謂的H5RTSPPlayer,這些都無外乎一個共同點,就

EasyNVR媒體伺服器接入EasyDSS雲視訊平臺快照上傳實現

EasyNVR擁有接入EasyDSS雲平臺的功能 接入EasyDSS雲平臺會定時向雲平臺上傳快照資料,這個快照資料用於雲平臺向客戶端提供快照展示 遇到的問題 由於快照上傳的間隔提供認為修改的功能,則我們限定最短時間為1分鐘 通道的數量會直接影響快照上傳