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