基于EasyIPCamera实现的RTSP跨平台拉模式转发流媒体服务器
2016-11-21 15:39
691 查看
本文转自博客:http://blog.csdn.net/xinlanbobo/article/details/53224445
上一篇博客《EasyIPCamera通过RTSP协议接入海康、大华等摄像机,摒弃私有SDK接入弊端》简单介绍了自己的需求,并对EasyIPCamera_RTSP进行编译、运行。本篇博客针对EasyIPCamera_RTSP进行二次开发,增添读取配置文件、读取数据库的功能,将EasyIPCamera_RTSP打造成为简单的RTSP流媒体服务器。1. 读取配置文件(读数据库道理类似)
Win32下,读取INI配置文件非常简单,其中我的配置文件名为“EasyIPCamera_RTSP.ini”,具体内容如下:
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
具体读取配置文件代码如下:
2
1
2
上述代码非常简单,通过读取配置文件[RunMode]中的Mode字段,来确定程序的运行模式。“单机”模式就是通过配置文件中的[IPCx]字段生成摄像机连接串信息,“数据库”模式就是将相关IPC连接串信息存入数据库,通过数据库服务读取。
2. 初始化所有通道信息
根据配置文件或者数据库中的相关字段,生成的IPC连接串信息需要一次性初始化至
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协议接入海康、大华等摄像机,摒弃私有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:5541
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跨平台拉模式转发流媒体服务器
- 基于live555实现的跨平台高性能RTSPServer流媒体服务器EasyIPCamera
- EasyHLS实现将IPCamera摄像机的RTSP流转成HLS(ts+m3u8)直播输出
- 基于live555实现的跨平台高性能RTSPServer流媒体服务器EasyIPCamera
- javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)
- 基于EasyIPCamera实现的数字网络摄像机IPCamera的模拟器IPC RTSP Simulator
- EasyHLS实现将IPCamera摄像机的RTSP转HLS直播输出
- 基于EasyIPCamera实现的数字网络摄像机IPCamera的模拟器IPC RTSP Simulator
- EasyHLS实现将IPCamera摄像机的RTSP流转成HLS(ts+m3u8)直播输出
- javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)
- 基于live555实现的跨平台高性能RTSPServer流媒体服务器EasyIPCamera
- javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)
- 基于EasyDarwin云平台实现的EasyClient客户端与EasyCamera摄像机之间的对讲与云台控制功能
- 基于EasyDarwin云平台实现的EasyClient客户端与EasyCamera摄像机之间的对讲与云台控制功能
- EasyDarwin开源流媒体服务器进行RTSP转发过程中将sdp由文件存储改成内存索引
- 基于EasyRTMP/EasyRTSPClient实现多路RTSP转RTMP流直播推送工具RTMPLive
- EasyDarwin开源流媒体服务器进行RTSP转发过程中将sdp由文件存储改成内存索引
- WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现
- WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现
- 实现基于TCP/IP的多串口转换网关