RtspServer是参考了live555和jrtplib实现的,但代码全部是重新书写的,所以不依赖于任何第三方库即可编译和运行,

目前仅支持h264和G711格式,这是rtp打包时决定的,后续将不断迭代优化,加入对其他格式的支持。

RtspServer的功能是接收输入的流,然后推流到客户端,

用户参考main.cpp,就可以把RtspServer当作库来使用。

RtspServer的流程是,会开启两个线程,一个线程监听客户端的链接,一旦有链接则保存到链表里。同时,有另外一个

线程不断的去轮询这个链表,然后处理链表中的每一个连接对应的rtsp命令,处理命令时使用了正则表达式,简化了字符串解析流程。

另外,当SETUP时,会建立rtp会话的链接,然后当PLAY时,会将接收到的音视频流打包成RTP包,然后通过rtp链接推送到客户端

全部的源码可访问:https://github.com/fengweiyu/RTSP/tree/master/RtspServer  ,目前的版本是V1.0.1,

下载完源码后,先查看ReadMe.txt,然后执行make,再运行程序即可。

关于源码的介绍,主要用的就5个类,

类的说明:

RtspServer:对客户端请求的RTSP命令的回应处理,以及推流操作。

TcpSocket: RtspServer的父类,主要是用于与客户端命令通信的TCP链路的相关操作

RtpSession:对RTP会话的操作,内部主要是发送RTP包

UdpSocket::主要是RTP会话会使用UDP的方式,这里提供UDP链路的相关操作

RtpPacket:对接收到的音视频数据进行RTP打包

类的关系是:

RtspServer继承TcpSocket,RtspServer会调用RtpPacket进行打包,打包后再通过RtpSessio向客户端推流。

关于RTSP协议的介绍可以参考我的博客:http://www.cnblogs.com/yuweifeng/p/7567846.html

最新文章

  1. 订制DOM选择器
  2. 无法启动"D\projects\hello\Debug\hello.exe" 系统找不到指定的文件。[LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏]
  3. SQLiteDatabase 基本操作
  4. LeetCode122:Best Time to Buy and Sell Stock II
  5. vue.js学习笔记之v-bind,v-on
  6. Linux下原子性操作,类似Windows下的InterLockedXXX
  7. java 中多线程和锁的使用
  8. 无网络centos7中部署kubernetes
  9. fzu 2105 Digits Count ( 线段树 ) from 第三届福建省大学生程序设计竞赛
  10. 使用Java语言开发微信公众平台(七)——音乐消息的回复
  11. lesson - 11 课程笔记
  12. C#中++i与i++的区别
  13. 使用python调用其他脚本
  14. js 3d图形
  15. Git - 信息查看
  16. 使用 TypeScript 改造构建工具及测试用例
  17. 张明楷:案件事实认定方法的七点注意 z
  18. extjs中组件监听器里面的回调函数说明
  19. 哪个HTML5内建对象用于在画布上绘制?()
  20. [转]C#三层架构登陆实例

热门文章

  1. 初学node.js-npm使用(2)
  2. <React Native移动开发实战>-1-React Native的JSX解决方案
  3. Python基础_异常处理与跟踪
  4. 浏览器差异bug汇总(js篇)
  5. 软件工程-东北师大站-第八次作业(PSP)
  6. java程序设计课程实验报告1
  7. 20162328蔡文琛 week09 大二
  8. 寒假学习计划&进度
  9. Week4-作业1:阅读与博客
  10. Linux 下安装mysql 8.0.11(CentOS 7.4 系统)