視頻轉換傳輸協議服務,將rtsp協議、gb28181協議轉換爲html5可以直接播放的協議。
源碼下載地址:https://download.csdn.net/download/qq_20191467/12418188
說明:
- ipc_server: 進程間通訊和進程保護的工具
- pm.json 配置文件,需要啓動的程序信息。
對接海康SDK
- hik_server: 使用海康sdk播放視頻並轉爲ws-flv
- hikctrl_server: 查看平臺設備信息、客戶端信息
- hikctrl.lua 數據庫腳本
- config.txt 海康平臺登陸配置
- 配置示例在Build/projects/config_hik_XXX
- 客戶端請求格式爲 http(ws)://IP:port/live/flv/0/[code]
- sdk只有32位的,導致整個項目工具層都增加了32位的編譯。只驗證海康相機上拋的是標準PS流,大華相機的是其私有碼流無法識別。
- 這個對接的實際意義不是很大,國標對接延時上來後,不太需要這種方法了。 不再更新。
對接視頻流
- relay_server: 將視頻流轉爲ws-flv,流可以爲rtsp、rtmp、hls等(理論上可以,只使用過rtsp)
- relayctrl_server: 查看客戶端信息
- 配置示例在Build/projects/config_relay_XXX
- 客戶端請求格式爲(不包含[]) http(ws)://IP:port/live?url=[rtsp地址]&hw=[960*480]&type=[flv]&probsize=[102400]&probtime=[2]&outcatch=[16384]
- url 原始視頻地址
- 其他參數見下
對接國標gb28181平臺
- sip_server: sip服務器,用來與下級平臺交互
- live_server: 將下級推送的基於PS的rtp流轉爲ws-flv
- livectrl_server: 查看設備信息、客戶端信息、設備控制
- 配置示例在Build/projects/config_gb28181_XXX
- 客戶端請求格式爲(不包含[]) http(ws)://IP:port/live?code=[code]&hw=[960*480]&type=[flv]&probsize=[102400]&probtime=[2]&incatch=[16384]&outcatch=[16384]
- code 相機的國標編碼,必填項
- hw 可選, 用來縮放視頻大小, 默認不進行縮放. 用來縮小視頻,只有填寫的值小於視頻原始值才生效
- type 可選, 指定媒體封裝格式,默認爲flv. 可以是mp4、h264等, 另找播放方式
- probsize 可選, ffmpeg探測流信息的緩衝大小,不指定時使用配置文件裏的值,配置文件也未指定時默認25600. ffmpeg默認值爲5000000
- probtime 可選, ffmpeg探測流信息的緩衝時間,不指定時使用配置文件裏的值,配置文件也未指定時默認1秒. ffmpeg默認值爲0, 不同格式時間不一,ps流是7秒
- incatch 可選, ffmpeg讀取內存中ps流數據的緩存大小,不指定時使用配置文件裏的值,配置文件也未指定時默認1024*16.
- outcatch 可選, ffmpeg輸出轉換後的數據的緩存大小,不指定時使用配置文件裏的值,配置文件也未指定時默認1024*16.
- 雲臺控制 http://ip:port/device/control?code=[code]&ud=[p1]&lr=[p2]&io=[p3]
- code 相機的國標編碼
- p1: 0-停止 1-向上 2-向下
- p2: 0-停止 1-向左 2-向右
- p3: 0-停止 1-焦距減 2-焦距加
編譯方法
- 平臺: Windows vs2012
- 用vs打開build/RelayLive.sln,按順序編譯ThirdParty、Common、Modules、Projects下的項目。
- 編譯前需要在屬性管理器中將Microsoft.Cpp.x64.user(或Microsoft.Cpp.Win32.user)中修改以下:(或者在每個項目屬性中都修改一次)
- 常規-輸出目錄:
$(SolutionDir)..\out\$(Platform)_$(Configuration)\
- 常規-中間目錄:
$(SolutionDir)..\out\Temp\$(Platform)_$(Configuration)\$(ProjectName)\
- 鏈接器-常規-附加庫目錄:
$(OutDir);%(AdditionalLibraryDirectories)
- 常規-輸出目錄:
- 在輸出目錄部署配置文件pm.json,config.txt和腳本文件 XXX.lua。(文件在/Build/projects下有示例)
- 從ffmpeg官方下載4.1以後的dll到輸出目錄。
- 最好用64位進行編譯使用,如需32位,可能需要一些修改
- 部署數據庫,數據庫的操作在XXX.lua中。
- 使用ipc_server啓動
- http-flv和websocket-flv都可以,但最好使用websocket-flv,免的出現跨域問題
- 只保留了視頻,音頻丟棄了。
nginx
- 頁面demo靜態文件通過nginx來訪問
- 信息查詢和設備控制等http請求通過nginx轉發到XXXctrl_server
- 視頻播放請求通過nginx進行負載均衡,轉發到對應的視頻服務
QQ交流羣:939938890