用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]/ ...
随机推荐
- Windows之wsl简单配置
Windows的wsl是Windows环境下启动的一个Linux环境,通常我们安装的是Ubuntu版本. 1.安装和简单配置 这里推荐一个文章,按照文章一步一步完全做就行 https://www.ji ...
- Android如何快速打出100个渠道apk
测试1分钟900多个包 关键思路就是读文件,如图: Python快速打包脚本: #!/usr/bin/env python import zipfile prefix = 'channel_' cha ...
- spring04
今天设计到的内容是是spring的sqel和ioc的生命周期和bean的后置处理器 具体的测试文件如下: <?xml version="1.0" encoding=" ...
- leetcode【1403. 非递增顺序的最小子序列】(01)
题目描述: 给你一个数组 nums,请你从中抽取一个子序列,满足该子序列的元素之和 严格 大于未包含在该子序列中的各元素之和. 如果存在多个解决方案,只需返回 长度最小 的子序列.如果仍然有多个解决方 ...
- PyJWT 详解
1.首先,我们需要先了解 JWT 的概念,所以我们先看pyjwt的官网 https://jwt.io/ 2.对于官方 JWT 有两篇博文写的不错分别如下: https://blog.csdn.net/ ...
- Struts2-学习笔记系列(5)-配置action
配置包命名空间 实现了action就需要在struts中配置action.首先配置包属性: 需要注意的是:在框架进行包匹配的时候,按文档的从上到下的顺序进行匹配 <!--下面配置名为book ...
- react性能优化最佳实践
1.PureComponent 的使用场景 PureComponent 和 Component 的区别是,PureComponent 自带 shouldComponentUpdate 生命周期函数,会 ...
- 用python代替人脑运算24点游戏
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:老方玩编程 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...
- JS 的基础概念
本篇文章主要讲述js的基础知识! 首先,我们要明白什么是JS,JS就是 javascript 的简称,是一种轻量级,弱类型的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能, ...
- HBase BucketAllocatorException 异常剖析
近日,观察到HBase集群出现如下WARN日志: 2020-04-18 16:17:03,081 WARN [regionserver/xxx-BucketCacheWriter-1] bucket. ...