用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]/ ...
随机推荐
- XXE验证与利用流程
特征 特征1 --- .ashx 看到url是 .ashx后缀的 特征2 --- 响应体是xml 发现有这些特征都可以用下面的流程测试 测试 在线工具: http://ceye.io/ http:// ...
- 判断移动端还是PC端JS
if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { // alert("手机&qu ...
- android 软件(app)之家庭版记账本首次进行helloword等相关测试
在进行对于app的创建之前是对于android studio的相关安装的环境的配置,完成这些之后自己就写个一个简单的helloword的实例进行了测试.之后通过进一步的向下挖掘,发现当将hellowo ...
- go语言goroutine
Go语言goroutine 在别的语言里想要在一个程序中实现多任务,如python,python实现多任务可以使用多进程.多线程.携程.但多进程占用资源,多线程无法发挥多核的优势(GIL),pytho ...
- Linux网络安全篇,进入SELinux的世界(二)
一.简单的网页制作 1.启动httpd服务 /etc/init.d/httpd start 2.编写首页网页文件 echo "hello,this is my first webPage&q ...
- Java研发技术学习路线
Java研发技术成长路线 作为一名Java研发者,深感Java技术的学习是一个漫长过程,从一名Java菜鸟开始,加之持之以恒的耐心和脚踏实地的精神,不间断理论的学习,不停止技术实践,终成为一名技术佼佼 ...
- C语言变长数组
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct Variable ...
- 实战if-else 过多详解
1.本文实例代码仅仅是俩个小例子. package com.example.demo.pattern.ifElse; import java.util.HashMap; import java.uti ...
- fork()系统调用的理解
系统调用fork()用于创建一个新进程.我们可以通过下面的代码来理解,最好是能自己敲一遍运行验证. #include<stdio.h> #include<stdlib.h> ...
- fiddler composer post请求
必加部分:Content-Type: application/json