流媒体协议之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
流媒体协议之RTSP服务端的实现20180629的更多相关文章
- 流媒体协议之RTSP详解20170922
		
一.RTSP协议介绍 1.什么是rtsp? RTSP协议以客户服务器方式工作,,如:暂停/继续.后退.前进等.它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制, 因此 ...
 - RTSP服务端开发概述
		
一 概述 RTSP(Real Time Streaming Protocol),RFC2326,实时音视频流传输协议,是TCP/IP协议体系中的一个应用层协议.该协议定义了一对多应用程序如何有效地通过 ...
 - 【C#】教你纯手工用C#实现SSH协议作为GIT服务端
		
SSH(Secure Shell)是一种工作在应用层和传输层上的安全协议,能在非安全通道上建立安全通道.提供身份认证.密钥更新.数据校验.通道复用等功能,同时具有良好的可扩展性.本文从SSH的架构开始 ...
 - CAS 5.1.x 的搭建和使用(四)—— 配置使用HTTP协议访问的服务端
		
CAS单点登录系列: CAS 5.1.x 的搭建和使用(一)—— 通过Overlay搭建服务端 CAS5.1.x 的搭建和使用(二)—— 通过Overlay搭建服务端-其它配置说明 CAS5.1.x ...
 - TCP协议下的服务端并发,GIL全局解释器锁,死锁,信号量,event事件,线程q
		
TCP协议下的服务端并发,GIL全局解释器锁,死锁,信号量,event事件,线程q 一.TCP协议下的服务端并发 ''' 将不同的功能尽量拆分成不同的函数,拆分出来的功能可以被多个地方使用 TCP服务 ...
 - 流媒体协议RTMP,RTSP与HLS有什么不同
		
转载自:http://www.cuplayer.com/player/PlayerCode/Wowza/2015/0204/1774.html HLS (HTTP Live Streaming) Ap ...
 - 网络流媒体协议之——RTSP协议
		
RTSP(Real-Time Stream Protocol)协议是一个基于文本的多媒体播放控制协议,属于应用层.RTSP以客户端方式工作,对流媒体提供播放.暂停.后退.前进等操作.该标准由IETF指 ...
 - 流媒体协议之RTSP客户端的实现20171014
		
RtspClient是基于jrtplib实现的,目前仅支持h264格式,后续将不断迭代优化,加入对其他格式的支持,并且将实现RTSP的服务端. RtspClient的功能是接收服务端过来流,然后写入到 ...
 - hadoop rpc协议客户端与服务端的交互流程
		
尽管这里是hadoop的rpc服务,但是hadoop还是做到了一次连接仅有一次认证.具体的流程待我慢慢道来. 客户端:这里我们假设ConnectionId对应的Connection并不存在.在调用ge ...
 
随机推荐
- Homebrew1.5之后安装PHP和扩展
			
Homebrew 1.5 宣布放弃 homebrew/php, 转而使用homebrew/core维护, 详见https://brew.sh/2018/01/19/homebrew-1.5.0/ 于是 ...
 - windows 无法链接 \\ , 拼写错误或者网络有问题,解决方法
			
1. 楼主首先在网上搜索了一遍问题, 比较全面的回答链接如下http://blog.csdn.net/newizan/article/details/50313137 然而并没有解决问题, 于是反思了 ...
 - Final阶段中间产物
			
空天猎功能说明书:https://git.coding.net/liusx0303/Plane.git 空天猎代码控制:https://coding.net/u/MR__Chen/p/SkyHunte ...
 - 软件工程-东北师大站-第八次作业(PSP)
			
1.本周PSP 2.本周进度条 3.本周累计进度图 代码累计折线图 博文字数累计折线图 4.本周PSP饼状图
 - Daily Scrumming* 2015.10.24(Day 5)
			
一.总体情况总结 从今天开始,我们开始正式进入紧锣密鼓的集中开发周啦~~加油Fighting~ 开会讨论了一下各个人的细致分工,前端后端各自想成员分派任务. 继续各自领域的准备工作,同时开始进行开发. ...
 - 作业MathExam
			
MathExam233 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 600 650 • ...
 - Task 9  从用户界面和体验分析“360极速浏览器”
			
我目前使用的浏览器是360极速浏览器,下面将针对用户界面.记住用户选择.短期刺激.长期使用的好处坏处.不要让用户犯简单的错误四个方面对其进行评估: 1.用户界面: 01 可视性原则--网络没有连接或者 ...
 - 优化Hibernate所鼓励的7大措施:
			
优化Hibernate所鼓励的7大措施: 1.尽量使用many-to-one,避免使用单项one-to-many 2.灵活使用单向one-to-many 3.不用一对一,使用多对一代替一对一 4.配置 ...
 - 项目Beta冲刺(团队)第七天
			
1.昨天的困难 服务器部署出了问题,本地服务器差点崩掉 运行一直闪退,在查找哪里出现问题的路上一去不复返 2.今天解决的进度 成员 进度 陈家权 消息功能模块 赖晓连 问答功能模块 雷晶 部署服务器到 ...
 - tomcat错误日志监控脚本
			
#!/usr/bin/env python #-*-coding:utf-8-*- #CreateDate:2017/04/14 #Author:Eivll0m #ScriptName:monitor ...