1. 程式人生 > >海康IPC+NVR+路由器+ffmpeg+nginx實現網頁/Android/IOS的HLS直播

海康IPC+NVR+路由器+ffmpeg+nginx實現網頁/Android/IOS的HLS直播

研究攝像頭直播有一個月了,最終領導決定使用HLS協議進行攝像頭實時預覽,原因是HLS對移動端和Web端都能有比較好的支援

總體思路大致如下:

1.搭建好IPC和NVR環境後,可以通過NVR的IP地址(內網)和rtsp協議訪問到關聯此NVR的IPC視訊

2.通過路由器的埠對映功能,將NVR的埠對映到外網上,這樣我們就能通過外網IP和對映的外網埠訪問到與承此NVR關聯的所有IPC視訊

3.在遠端伺服器上使用ffmpeg將rtsp視訊轉換成hls視訊

4.通過nginx將hls視訊進行轉發

一、準備

1.搭建IPC和NVR環境

這個不進行詳細介紹,相關搭建可百度海康IPC和NVR的設定,這一步我們需要達到的目標是NVR的顯示屏上能看到IPC的實時預覽畫面,並記錄下每個IPC的通道號

2.路由器埠對映

這個不進行詳細介紹,百度如何做埠對映即可,我們需要對映的是NVR上的RTSP埠(預設554),例如我們將NVR的554埠對映到外網的10554上

3.ffmpeg

4.nginx

這裡我們可以直接使用easydarwin中整合的nginx,因為已經配置好了,不需要我們再去學習

5.vlc

二、測試rtsp協議

首先我們測試下rtsp協議是否能正常訪問,獲取預覽視訊,例如外網ip是58.49.57.103

那麼我們可以使用vlc通過rtsp://admin:[email protected]:554/h264/ch33/sub/av_stream來測試rtsp是否能正常訪問

如果可以正常播放視訊,則說明rtsp正常

如果不能播放,你需要注意一下幾個地方是否有錯誤:

1)使用者名稱、密碼是否正確,由於我們是通過NVR去訪問IPC,不是直接訪問IPC,因此協議地址中的使用者名稱和密碼應填NVR的,這裡admin即NVR的使用者名稱,12345即NVR的密碼

2)IP通道號是否正確,在老款的NVR中,IP通道號從33開始,即ch33代表D1通道、ch34代表D2通道...依次類推

3)埠號是否正確,NVR的RTSP預設埠號是554,如果被修改,這裡也需要對應修改

三、使用ffmpeg進行協議轉換

這一步我們將rtsp協議轉換成hls協議,使用ffmpeg

ffmpeg是分32位和64位的,請注意轉碼計算機的位數

使用cmd定位到ffmpeg.exe所在的資料夾下,再執行以下程式碼進行轉碼

ffmpeg -i rtsp://admin:[email protected]:10554/h264/ch33/sub/av_stream -strict -2 -c:v libx264 -c:a aac -f hls f:nginx\www\hls\ipc1\ipc1.m3u8

其中-i後面是rtsp源的訪問地址,由於我們將nvr的ip和埠對映到外網上了,所以我們可以直接通過外網IP和對映外網埠進行訪問

-f後面是目標格式,這裡寫hls 再後面是m3u8檔案和切片ts檔案的存放路徑

這裡我們需要將這些生成的檔案存放到nginx中的www目錄下,方便nginx對m3u8檔案進行釋出

如果轉碼無誤,將出現以下介面


四、nginx釋出

獲取了m3u8檔案和ts檔案,下一步就是將m3u8釋出出去

下載的EasyDarwin中有個nginx資料夾,這就是我們需要的,其他資料夾在本示例中不需要(EasyDarwin也是非常非常強大的流媒體分發服務,大家可移步它的官網學習)

進入nginx/conf,開啟nginx.conf檔案,設定如下兩個埠號:


我們將通過http中的listen埠對m3u8檔案的訪問

雙擊nginx.exe,檢視工作管理員中的程序,如果有2個或兩個以上的nginx.exe程序出現,則說明nginx啟動成功,否則請檢查設定的兩個埠是否已被佔用

最後,我們訪問hls視訊的路徑是:http://58.49.57.103:10080/hls/ipc1/ipc1.m3u8

將此路徑放入vlc中,測試是否可以正常播放

以上示例實現通過內網穿透的方式,將攝像頭暴露在公網上,通過ffmpeg實現協議轉換,用於支援各終端的播放,實現此功能的還有海康螢石雲,幾乎不需要針對視訊底層開發,但是需要收費

另外此例項還有一個侷限性,即需要公網ip為固定ip,家用寬頻的ip不固定,因此在埠對映時,可使用花生殼、nat123等內網穿透服務,他們可提供域名對公網ip進行動態繫結

我們也可直連ipc實現此示例,但有路由器的埠對映數量有限,如果ipc太多,路由器埠對映數量不夠,因此,我們需要通過NVR去連線ipc,這樣我們只需要將nvr映射出去即可

相關推薦

IPC+NVR+路由器+ffmpeg+nginx實現網頁/Android/IOS的HLS直播

研究攝像頭直播有一個月了,最終領導決定使用HLS協議進行攝像頭實時預覽,原因是HLS對移動端和Web端都能有比較好的支援 總體思路大致如下: 1.搭建好IPC和NVR環境後,可以通過NVR的IP地址(內網)和rtsp協議訪問到關聯此NVR的IPC視訊 2.通過路由器的埠對映

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

上篇部落格是用ffmpeg+nginx實現web播放rtsp視訊,原理是將rtsp轉碼成rtmp格式,再用flash外掛播放 由於專案硬體條件有限,轉碼基本就不考慮了,因此只能直接播放獲取到的rtsp流,並且整個網路環境只能有一個外網IP,因此思路就是能否通過NVR去找同一網段內的IPC,如何搭建NVR和I

流媒體伺服器、威視 大華攝像頭實現視訊監控、直播解決方案

  隨著網際網路+物聯網程序的加快,視訊監控應用領域變得越來越廣泛,其中海康威視 大華等品牌的攝像頭頻繁出現在視野中。由於去年也實現過智慧工地專案上的視訊監控方案,加上當今直播趨勢不減。現在總結一下: 緣由:是1對N 點對多的直播方式, 一般都是採用伺服器轉發,所以此處不考慮WebRTC這種端對端的方式,We

IPC+ffmpeg+nginx+ckplayer實現網頁實時預覽監控視訊

第一次接觸攝像頭  搗騰了好幾天  現在記錄下搭建過程 以免忘掉實現思路和其他大神的基本一致 :1.通過IPC的rtsp協議獲取rtsp流  2.使用ffmpeg轉成rtmp協議  3.通過nginx釋出rtmp流  4.使用ckplayer播放一、準備:1.海康IPC2.交

威視SDK—ClientDemo-NetBeansPro實現

首先使用Eclipse匯入專案,建議操作如下: 1.複製ClientDemo-NetBeansPro至自己的工作空間 2.使用eclipse建立新的java project,名稱、路徑與該專案一致(ClientDemo-NetBeansPro),這樣會自動匯入該專案 3

ffmpeg+nginx 實現拉流轉碼播放

1,客戶需求,編碼器,IPTV 水療娛樂裝置 2,軟體需要。ffmpeg常用命令連結 , vlc ,nginx環境下。 3,再給測試視訊的連結。 可以播放的直播地址 4,看張圖,現場環境。 5,這裡就是 為了編碼器的播出地址,經過ffmpeg 放到本

監控NVR模式下+web呼叫(附官方開發包)+手把手教你接入

最近公司的看板專案需要做一個網路攝像頭模組,客戶正在使用的是海康攝像頭,通過NVR管理。要求我們在web端實現一些功能: 編號對應圖中紅色編號,後面是文字介紹 1、 輸入網路攝像頭的IP地址

nginx實現最簡單的直播

系統環境 [[email protected] live]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [[email protected]-test live]# getenforce Disa

OpenCv + ffmpeg + rtmp 實現攝像頭採集資料直播功能

採用OpenCv獲取影象資料,通過ffmpeg推流給rtmp伺服器 OpenCV獲取的影象資料為BGR格式,需要轉換成YUV格式

【學習筆記】HLS技術簡介&實現網頁播放m3u8直播

HLS (HTTP Live Streaming)是Apple公司研發的流媒體傳輸技術,包括一個m3u8的索引檔案、多個ts分片檔

ffmpeg+nginx+威視網路攝像頭rtsp在手機端和電腦端實現直播

原料:海康威視攝像頭,nginx伺服器,ffmpeg。首先海康威視攝像頭,它的rtsp資料流的地址為:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream說明:userna

Nginx+ffmpeg+ckplayer監控攝像頭在web頁面播放RTSP轉RTMP

#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/ng

FFmpeg總結(十二)用ffmpegnginx實現直播多路流並發播放

xxx 開源 conf ref itl rect arc med rtm 圖:撒哈拉沙漠 下載 nginx 和 nginx-rtmp源碼: http://nginx.org/download/nginx-1.5.10.tar.gz https://github.com/a

OpenCV直接或通過NVR開啟威視IP攝像頭

1.直接開啟IP攝像頭 ①攝像頭接網線懟到電腦上,我用的是POE供電的攝像頭,單獨接電腦還要用個電源給它供電; ②下載Hikvision Tools,修改攝像頭IP地址(192.168.1.101)和密碼(asd123456),修改密碼用微信公眾號“海康威視客戶服務”掃碼; ③Video

EasyGBS國標流媒體視訊平臺接入、大華、宇視的攝像機、硬碟錄影機NVR、國標下級平臺的方案

在上一篇《EasyNVR和EasyDSS雲平臺聯手都不能解決的事情,只有國標GB28181能解決了》我們大致介紹了國標GB/T28181的使用場景,而且初步介紹了EasyGBS國標視訊平臺,那麼,我們就EasyGBS分別接入海康、大華、宇視的IPC網路攝像機或者NVR網路硬碟錄影機的配置

模擬大華或相機的迴圈&&動態連結庫的形式實現&&回撥函式的使用

1.動態連結庫封裝函式 Dll的cpp檔案 #include <iostream> #include <windows.h> using namespace std; l

PHP+ffmpeg+nginx的配置實現視訊轉碼

最近專案中需要實現上傳視訊過程中自動轉碼MP4格式的功能,想到了用FFmpeg來實現它,但從來沒有操作過,查閱了很多資料,遇到了好多問題,現在終於安裝成功,覺得應該寫下來與人分享一下,以免有人遇到和我一樣的困境。 首先我是CentOs 6.7版本 環境是LNMP 我需要用P

ffmpeg+nginx+video實現rtsp流轉hls流,通過H5檢視監控視訊

一、FFmpeg下載:http://ffmpeg.zeranoe.com/builds/  下載並解壓FFmpeg資料夾,配置環境變數:在“Path”變數原有變數值內容上加上d:\ffmpeg\bin,驗證:ffmpeg -version 出現版本號則成功。二、官網下載w

Wex5+攝像頭+cordova封裝 實現流媒體對接視訊線上監控

上個專案是用wex5開發的,專案中有用到視訊播放功能,對於本地視訊或者儲存到伺服器的視訊,wex5自帶的外掛都支援播放,海康視訊監控在原生端做的很好了,h5目前還不支援,我們的思路只能是將海康視訊播放器封裝成cordova外掛,然後在wex5中呼叫,其中有部分坑記錄下來備用。

手把手教你使用ffmpegnginx實現直播、點播、安防監控-單點-專題視訊課程

手把手教你使用ffmpeg及nginx實現直播、點播、安防監控—6人已學習 課程介紹        手把手教你使用ffmpeg及nginx實現直播、點播、安防監控課程收益    講師介紹    單點更多