海康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:12345@192.168.1.101/h264/ch33/main/av_stream

这个IP地址是NVR的(我的NVR是旧版的,所以访问地址也只能有旧的地址),格式和直接访问IPC没什么不同,需要注意的是在旧版NVR中,ch33是IP通道的第一个通道,我们在NVR的通道设置中是可以设置IPC的通道编号的

一、准备

1.EasyDarwin

下载地址:http://pan.baidu.com/s/1sluDEPn(下载里面的.rar文件包即可,另一个是linux的)

2.EasyPusher

下载地址:https://codeload.github.com/EasyDarwin/EasyPusher/zip/master

3.VLC

下载地址:http://sw.bos.baidu.com/sw-search-sp/software/c2904cc7121e0/vlc_2.2.4.0.exe


二、启动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:12345@192.168.1.101/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++大神能帮助修改源码,实现多源转发

阅读更多

没有更多推荐了,返回首页