用libevent写的海康摄像头rtsp客户端
之前一直使用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客户端的更多相关文章
- 【miscellaneous】海康相机RTSP连接代码分析
海康相机RTSP连接代码分析 最近在做海康相机rtsp连接获取音视频的工作,现在介绍一下分析过程和源码. [源码在我上传的共享资料中: http://download.csdn.net/detail/ ...
- Java 实现 海康摄像头抓拍图像 Windows、Linux
先抱怨一下,打死都想不到,海康的摄像头SDK居然是一个Java类,还有必须的两个jar包(jna.jar,examples.jar).鬼能想得到会这么命名. 下面开始吧. Windows 把从官网下载 ...
- 通过ISAPI http协议控制海康摄像头
一直用海康的SDK进行摄像头控制,但有时候非常不灵活,必须有X86的主机,在嵌入式上面就不行,通过写一个HTTPCLIENT可以通过ISAPI来控制海康的摄像头. 代码如下:git@github.co ...
- 海康摄像头配置固定IP
前言 首先要海康设备连接好网线,电脑客户端跟海康设备在同一个局域网络. 1.直接在海康网站下载SADP工具软件,安装SADP工具,如图所示: 2.安装成功后,桌面的出现设备网络搜索, 面板介绍:这里将 ...
- 使用ffmpeg将海康视频rtsp转为hls
测试环境: Ubuntu14.04 LTS Desktop ffmpeg version 3.3.3 命令行运行: ffmpeg -i rtsp://admin:12345@10.0.10.19:55 ...
- 海康PTZ云台摄像头调试之直接控制云台(C#)
众所周知,海康的摄像头sdk较为完善,但是对于新手来说还是有点麻烦. 今天写一篇随笔给大家展示下怎么控制海康摄像头的云台(前提是有ptz云台设备) 1.sdk准备 本文基于C#的frame来开发一个p ...
- 海康、大华IpCamera RTSP地址和格式
海康:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream说明:username: 用户名.例如 ...
- 海康/大华 IpCamera RTSP地址和格式
海康:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream说明:username: 用户名.例如 ...
- 海康&大华&DSS视频拉流-RTSP转RTMP多媒体播放技术
海康&大华&DSS获取RTSP 实时流 海康:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/ ...
随机推荐
- UITextField - 为正文设置缩进
实现思路: 把UITextField的leftView当做填充位置,这样就实现了文字偏移. 代码: UILabel *label = [[[UILabelalloc] initWithFrame:CG ...
- LeetCode | 136. 只出现一次的数字Ⅰ Ⅱ
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: 输入: [ ...
- 用curl调用https接口
今天在windows下用curl类获取微信token一直返回false,查阅资料后,发现是https证书的锅,在curl类中加上这两条,问题瞬间解决. curl_setopt($ch, CURLOPT ...
- JavaScript中||和&&的运算
一般来讲 && 运算和 | | 运算得到的结果都是 true 和 false ,但是 js 中的有点不太一样.当进行 a&&b 和 a| |b (如 1&&am ...
- LINUX解压缩 zip文件
压缩当前目录的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前目录 unzip xxx.zip
- 学习《深入应用c++11》1
C++11 让程序更简洁.更优雅 可调用对象 是一个函数指针 是一个具有operator()成员函数的类对象(仿函数) 是一个可被装换为函数指针的类对象 是一个类的成员(函数)指针 void func ...
- scala_spark实践2
参考:jianshu.com/p/9d2d225c1951 监听socket获取数据,代码如下:这里使用nc -lk 9999 在ip为10.121.33.44的机器上发送消息 object Sock ...
- golang trace 分析 简例
今天,通过一个例子,一方面熟悉trace在自定义范围内的分析,另一方面golang 在协程调度策略上的浅析. Show Code // trace_example.go package main im ...
- 010-字符串-C语言笔记
010-字符串-C语言笔记 学习目标 1.[掌握]二维数组的声明和初始化 2.[掌握]遍历二维数组 3.[掌握]二维数组在内存中的存储 4.[掌握]二维数组与函数 5.[掌握]字符串 一.二维数组的声 ...
- 006-循环结构(下)-C语言笔记
006-循环结构(下)-C语言笔记 学习目标 1.[掌握]do-while循环结构 2.[掌握]for循环结构 3.[掌握]嵌套循环 一.do-while循环结构 do-while语法: 1 2 ...