几个RTP的开源实现
玩了两天rtp协议,基本把rtsp/rtcp/rtp/rtmp/srtp/strcp/mms,几个协议的区别和概念弄明白了。
这里记录一下。
rtsp:类似用户界面操作,和Http比较类似,提供播放,停止,加入等功能。注意,这里rtsp只负责发送操作命令,实际的音视频数据,并不由这个协议承载。这是我困惑很久之后才明白的(我是不是太弱了,呵呵)
rtsp协议并没有规定底层是由tcp还是udp实现,实际操做中,我通过google搜索发现rtsp确实有tcp和udp两种实现,我就不上抓包数据了,这个博客园里面已经有人干过了。另外这个也算和http不同的一点,http都是tcp。
rtp : 这个协议是干累活的,音视频数据,都由这个协议承载。rtp实际的包里,还包括些流类型(h264,aac)描述,包序列描述等等。底层数据包都由UDP承载。
rtcp: 控制协议,举个例子,音视频数据发出去了,发了多少,收到多少,丢了多少,网络延迟多大,这些QOS(Quality of Service)相关的数据,以及音频同步的信息。谁来提供,没错,就是rtcp。与rtp是兄弟协议,由udp承载数据。
----------------------------------------------------------------------------------------------------------------------
以上是比较标准的东东。
rtmp: 看起来很像ietf的东西,不过是adobe自家的协议,不过后来也开放出来了,基本上可以等同于flash播放的服务器。有开源实现rtmpdump,有兴趣的同学可以自己google一下自己看看。
srtp: 思科与爱立信扣起手搞得,后来也成了ietf标准,可以理解成加密的rtp,主要用于voip,视频方面?偶不知道。。。。
srtcp:同上。这两个协议都是相伴而生的。
mms:微软自己搞的,类似于rtsp协议,暗下不表。觉得这里很搞笑,不是国际标准,但总还要给他很大的支持,shit。微软啊,弄了太多不标准了。。。
我不帖包头分析和协议层次这种东西了,太多了,我只是记录一下我自己对这些东西的理解,网上大多讲得不够全面,我总结一下。
------------------------------------------------------------------------------------------------------------------------
找了几个rtp比较知名的开源实现,并且用vc2005编译通过了。附带demo。
ortp:linphone项目的子项目,开发语言是c语言,实现了rtp/rtcp协议,没有实现rtsp协议,如果要用,自己google一下,有比较多的开源实现。自己动手也不算复杂。
jrtplib:项目主页如下
http://research.edm.uhasselt.be/~jori/page/index.php?n=Main.HomePage
开发语言是C++,同样没有实现rtsp。有喜欢c++的同学可以选择这个。
live555:这个项目放到这里,我很纠结,因为live555的野心明显不是实现几个协议,人家是要干票大的。他除了实现了rtsp/rtp/rtcp/各种协议之外,还实现了各种流媒体的分包解析。
上面两个还算是单纯的库,live555就是一整套解决方案了,只是顺便实现几个协议,呵呵。其他:vlc/mpeg4ip/的rtp相关实现都是使用live555,不多了。
上下载链接
http://files.cnblogs.com/mr-nop/live.rar
http://files.cnblogs.com/mr-nop/jrtplib.rar
http://files.cnblogs.com/mr-nop/ortp.rar
几个RTP的开源实现的更多相关文章
- io资料
jitsi red5 apache meeting2 openmeeting2 openfire http://www.onlycoder.net/ 在视频会议领域,有许多可以值得参考的开源项目,这些 ...
- 流媒體】jrtplib—VS2010下RTP开源协议库JRTPLIB3.9.1编译
一.JRTPLIB简介 老外用C++编写的开源RTP协议库,用来进行实时数据传输,可以运行在 Windows.Linux. FreeBSD.Solaris.Unix和VxWorks 等多种操作系统上, ...
- 基于SIP和RTP协议的开源VOIP之QuteCom简单介绍
**************************************************************************************************** ...
- 关于开源的RTP——jrtplib的使用
session.BeginDataAccess(); if (session.GotoFirstSource()){ do{ RTPPacket *packet; while ((packet = s ...
- EasyDarwin开源社区流媒体视频课程:流媒体传输控制协议(RTSP RTP SDP)详解之sdp
视频课程及相关文档代码地址:https://github.com/EasyDarwin/Course#course-3 SDP协议 一.SDP协议介绍 SDP 完全是一种会话描述格式(对应的RFC23 ...
- 如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源
1.前言 关于微信内部正在使用的网络层封装库Mars开源的消息,1个多月前就已满天飞(参见<微信Mars:微信内部正在使用的网络层封装库,即将开源>),不过微信团队没有失约,微信Mars ...
- RTP在。net中的使用(资料)
开源组件:lumisoft 网址:http://www.lumisoft.ee/lswww/download/downloads/Examples/ 非开源的免费组建:rtp.net (微软推荐)
- 对最近的RTP和H264学习进行总结整理-04.20
虽然还是没有搞出来,但总感觉快了哈哈(哪来的自信) 1.RTP协议接受数据 #region 1-RTP协议变量声明 RTPSession session; RTPReceiver receiver; ...
- RTP RTCP在音视频传输与同步方面的使用
转自:http://blog.csdn.net/kof98765/article/details/17733701 1 音视频实时传输 1.1 Jrtplib库介绍 本系统采用开源库Jrtplib进行 ...
随机推荐
- 对于POI的XSSFCell 类型问题
1.XSSFCell.CELL_TYPE_BLANK 2.XSSFCell.CELL_TYPE_BOOLEAN 取值方式:cell.getBooleanCellValue() 3.XSSFCell.C ...
- 学点css之经验总结篇章
学css说起来应该有三天左右的时间的,加上之前了解的基础,对css有一点的感性认识了,相应代码有有比较好的把握,现在就通过分享几张照片的形式分享一下我的收获 备注:在Border的外边的部门被称作:o ...
- MVC小系列(二十)【给Action提供HttpStatusCodeResult】
主要用到: HttpStatusCodeResult 和HttpStatusCode 的http返回状态 比如: /// <summary> /// 使用异步模式 /// </sum ...
- [转] c# 数据类型占用的字节数
http://www.cnblogs.com/laozuan/archive/2012/04/24/2467888.html
- Java I/O重定向
1.输入重定向 命令行:java [java类文件] < [输入文件路径名] 代码:InputStream inputStream = new FileInputStream( ...
- Haproxy配置参数
HAProxy配置中分成五部分内容,当然这些组件不是必选的,可以根据需要选择部分作为配置. ===================== global 参数是进程级的,通常和操作系统(OS)相关. ...
- linux yum配置
yum源模版 vi /etc/yum.repos.d/xxx.repo [rhel-server]name=serverbaseurl=file:///media/disk/Serverenabled ...
- c#安全性、稳定性、高性能需要注重的点
1.弱事件 2.类型安全(包括类型转换时可能的异常) 3.线程安全 5.装箱和拆箱 6.闭包传递局部变量时可能遇到的问题. 7.用于dictionary的键,要同时实现GetHashCode和Equa ...
- html-----014---统一资源定位器
HTML 统一资源定位器 URL 可以由单词组成,比如 “w3school.com.cn”,或者是因特网协议(IP)地址:192.168.1.253.大多数人在网上冲浪时,会键入网址的域名,因为名称比 ...
- Object-API-NSLog
NSLog中的基础数据类型 输出格式: NSLog("") char: %c short int: %hi %hx %ho unsigned short int: %hu %hx ...