之前一直使用live555作为RTSP的客户端,但其框架臃肿,虽然支持各种格式,但实际中并没有这些需求,关键是其注重于格式的解析,却不注重网络IO,单线程下性能也不高,重新用libevent编写rtspclient,目前支持海康摄像头测试没有问题。

  先通过libevent将所有的IO输入进行队列管理,再由回调函数来进行所有输入输出的处理,包括connect在内都采用无阻塞的方式运行。

  目录下共有三个文件  net/   util/  makefile.pub

  先在util目录下make

  然后在net 目录下make ,目录下会生成test_rtsp_test的测试文件,编译时需要自己编译下载libevent库,并在编译时指定。

  rtsp测试客户端位于test目录下,需要自己填写正确的rtsp地址以及密码。

  测试效果如下:

  源代码地址:git@github.com:hpwang666/rtspclient.git

 <  OPTIONS rtsp://172.16.10.42/h264/ch1/main/av_stream RTSP/1.0
< CSeq:
< User-Agent: HPWANG_Net_Rtsp_Client
< DESCRIBE rtsp://172.16.10.42/h264/ch1/main/av_stream RTSP/1.0
< CSeq:
< User-Agent: HPWANG_Net_Rtsp_Client
< Accept: application/sdp
> RTSP/1.0 OK
> CSeq:
> Public: OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER
> Date: Sat, May :: GMT
> RTSP/1.0 Unauthorized
> CSeq:
> WWW-Authenticate: Digest realm="c42f90c4d6a7", nonce="cc638c6d39dc662f5444a95297c7b448", stale="FALSE"
> WWW-Authenticate: Basic realm="c42f90c4d6a7"
> Date: Sat, May :: GMT
< DESCRIBE rtsp://172.16.10.42/h264/ch1/main/av_stream RTSP/1.0
< CSeq:
< Authorization: Digest username="admin", realm="c42f90c4d6a7", nonce="cc638c6d39dc662f5444a95297c7b448", uri="rtsp://172.16.10.42/h264/ch1/main/av_stream", response="90931e51ea13fb16a2d8ceb4d70cf52f"
< User-Agent: HPWANG_Net_Rtsp_Client
< Accept: application/sdp
> RTSP/1.0 OK
> CSeq:
> Content-Type: application/sdp
> Content-Base: rtsp://172.16.10.42/h264/ch1/main/av_stream/
> Content-Length:
> v=
> o=- IN IP4 172.16.10.42
> s=Media Presentation
> e=NONE
> b=AS:
> t=
> a=control:rtsp://172.16.10.42/h264/ch1/main/av_stream/
> m=video RTP/AVP
> c=IN IP4 0.0.0.0
> b=AS:
> a=recvonly
> a=x-dimensions:,
> a=control:rtsp://172.16.10.42/h264/ch1/main/av_stream/trackID=1
> a=rtpmap: H264/
> a=fmtp: profile-level-id=; packetization-mode=; sprop-parameter-sets=Z00AH5WoFAFuhAAAHCAABX5AEA==,aO48gA==
> a=Media_header:MEDIAINFO=494D4B48010100000400010000000000000000000000000000000000000000000000000000000000;
> a=appversion:1.0
< SETUP rtsp://172.16.10.42/h264/ch1/main/av_stream/trackID=1 RTSP/1.0
< CSeq:
< Authorization: Digest username="admin", realm="c42f90c4d6a7", nonce="cc638c6d39dc662f5444a95297c7b448", uri="rtsp://172.16.10.42/h264/ch1/main/av_stream/trackID=1", response="e4d1d85ddf55cbe0265b147ff01db724"
< User-Agent: HPWANG_Net_Rtsp_Client
< Transport: RTP/AVP/TCP;unicast;interleaved=-
> RTSP/1.0 OK
> CSeq:
> Session: ;timeout=
> Transport: RTP/AVP/TCP;unicast;interleaved=-;ssrc=652f13b9;mode="play"
> Date: Sat, May :: GMT
< PLAY rtsp://172.16.10.42/h264/ch1/main/av_stream/ RTSP/1.0
< CSeq:
< Session:
< Authorization: Digest username="admin", realm="c42f90c4d6a7", nonce="cc638c6d39dc662f5444a95297c7b448", uri="rtsp://172.16.10.42/h264/ch1/main/av_stream/", response="85dd42ecf1c7056e1cf54b595586606b"
< User-Agent: HPWANG_Net_Rtsp_Client
< Range: npt=0.000-
> RTSP/1.0 OK
> CSeq:
> Session:
> RTP-Info: url=rtsp://172.16.10.42/h264/ch1/main/av_stream/trackID=1;seq=10268;rtptime=3312431238
> Date: Sat, May :: GMT
..................................................................................................................................
.......................................................................................................................................
........................................................................................................................................
.........................................................................................................................................
.....................

其中.........表示一个rtp的包,要注意网络分片需要将其重新拼包。

源代码地址:git@github.com:hpwang666/rtspclient.git

用libevent写的海康摄像头rtsp客户端的更多相关文章

  1. 【miscellaneous】海康相机RTSP连接代码分析

    海康相机RTSP连接代码分析 最近在做海康相机rtsp连接获取音视频的工作,现在介绍一下分析过程和源码. [源码在我上传的共享资料中: http://download.csdn.net/detail/ ...

  2. Java 实现 海康摄像头抓拍图像 Windows、Linux

    先抱怨一下,打死都想不到,海康的摄像头SDK居然是一个Java类,还有必须的两个jar包(jna.jar,examples.jar).鬼能想得到会这么命名. 下面开始吧. Windows 把从官网下载 ...

  3. 通过ISAPI http协议控制海康摄像头

    一直用海康的SDK进行摄像头控制,但有时候非常不灵活,必须有X86的主机,在嵌入式上面就不行,通过写一个HTTPCLIENT可以通过ISAPI来控制海康的摄像头. 代码如下:git@github.co ...

  4. 海康摄像头配置固定IP

    前言 首先要海康设备连接好网线,电脑客户端跟海康设备在同一个局域网络. 1.直接在海康网站下载SADP工具软件,安装SADP工具,如图所示: 2.安装成功后,桌面的出现设备网络搜索, 面板介绍:这里将 ...

  5. 使用ffmpeg将海康视频rtsp转为hls

    测试环境: Ubuntu14.04 LTS Desktop ffmpeg version 3.3.3 命令行运行: ffmpeg -i rtsp://admin:12345@10.0.10.19:55 ...

  6. 海康PTZ云台摄像头调试之直接控制云台(C#)

    众所周知,海康的摄像头sdk较为完善,但是对于新手来说还是有点麻烦. 今天写一篇随笔给大家展示下怎么控制海康摄像头的云台(前提是有ptz云台设备) 1.sdk准备 本文基于C#的frame来开发一个p ...

  7. 海康、大华IpCamera RTSP地址和格式

    海康:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream说明:username: 用户名.例如 ...

  8. 海康/大华 IpCamera RTSP地址和格式

    海康:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream说明:username: 用户名.例如 ...

  9. 海康&大华&DSS视频拉流-RTSP转RTMP多媒体播放技术

    海康&大华&DSS获取RTSP 实时流 海康:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/ ...

随机推荐

  1. 从上帝视角看Java如何运行

    JVM内存结构 可以看出JVM从宏观上可以分为 ‘内部’  及 ‘外部’  两个部分(便于记忆理解): ‘内部’包含:线程共享(公有)数据区 和 线程隔离(私有)数据区 ‘外部’包含:类加载子系统.垃 ...

  2. WDK驱动开发点滴

    老程序员做新方向,老树发新芽,作为菜鸟的我,写点心得,用以记录并与同行交流 1对一些概念的理解: KMDF与UMDF.两者的框架,及使用VS生成的初始代码基本相同,只有所包含的头文件不同,链接的系统库 ...

  3. SSM项目依赖,spring5.1.9

    SSM项目依赖,spring5.1.9 简单的SSM项目,未加AOP等等操作 Spring三包bean core content Mybatis 五个mybatis mybatis-spring jd ...

  4. web页面调用支付宝支付

    web页面调用支付宝支付 此文章是前端单独模拟完成支付,若在线上环境则需要后台配合产生签名等参数 在蚂蚁金服开放平台申请沙箱环境 将沙箱环境中的密钥.应用网关.回调地址补全,生成密钥的方法在此 配置好 ...

  5. Oracle 数据库创建导入

    Oracle 数据库创建导入 由 Alma 创建, 最后一次修改 2018-06-04 14:37:50 在本章教程中,将教大家如何在Oracle 中创建导入数据库. 注意:本教程中的有些命令您可能并 ...

  6. 使用systemctl工具

                           使用systemctl工具 8.1问题 本例要求掌握systemctl控制工具的基本操作,完成下列任务: 重启httpd.crond.bluetooth服 ...

  7. Evolution of Image Classifiers,进化算法在神经网络结构搜索的首次尝试 | ICML 2017

    论文提出使用进化算法来进行神经网络结构搜索,整体搜索逻辑十分简单,结合权重继承,搜索速度很快,从实验结果来看,搜索的网络准确率挺不错的.由于论文是个比较早期的想法,所以可以有很大的改进空间,后面的很大 ...

  8. go中的面向对象总结

    我们总结一下前面看到的:Go 没有类,而是松耦合的类型.方法对接口的实现. OO 语言最重要的三个方面分别是:封装,继承和多态,在 Go 中它们是怎样表现的呢? 封装(数据隐藏):和别的 OO 语言有 ...

  9. linux升级python2.7到3.7.0

    1.下载python3.7.0压缩包在 wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz 2.解压缩 tar -zxvf Py ...

  10. 二、Centos7—U盘启动盘制作

      1,准备一个8gU盘. 2.iso系统镜像文件. 3.下载UltraISO软件制作启动盘. 4.运行UltraISO软件 5.在UltraISO软件中打开刚下载的Centos系统安装文件 6.开始 ...