几个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进行 ...
随机推荐
- uboot源码解析
实例:1.3.4版本at91sam系列 GPIO部分: 一.初始化: include\asm-arm\arch-at91sam9\gpio.h 1.同一引脚的复用设置 2.输入输出初始化寄存器 3.得 ...
- 如何理解 Redux?
作者:Wang Namelos 链接:https://www.zhihu.com/question/41312576/answer/90782136 来源:知乎 著作权归作者所有,转载请联系作者获得授 ...
- ActiveMQ系列(1) - 使用入门
没网的日子真的不好过啊 1.背景: 对于常见业务中,数据并发是一个很头疼的问题,很多时候,会出现资源共享导致线程阻塞的问题,这时候问题就来了,,,老板也尾随来了,来 ...
- android 6.0特性翻译 --渣渣
所有关于Android 6.0 棉花糖的知识 上下文帮助 1.现在按压:不需要离开你正在运行的app或者访问的网站就可 获取帮助,仅仅触摸和按下Home按钮.(长按Home键,可以在 android ...
- 状态栏通知Notification的简单使用
今天在学习Notification时同时参考了一些相关的博客,现在结合自身学习实际来总结一下. 在使用手机时,当有未接来电或者短消息时,通常会在手机屏幕上的状态栏上显示.而在Android中有提醒功能 ...
- 多个线程访问url
多个线程访问url package com.aig.ecompassios.ecard; import java.io.BufferedReader; import java.io.InputStre ...
- 对比iOS中的四种数据存储
来自于大牛的文章给大家分享下 :http://www.infoq.com/cn/articles/data-storage-in-ios/
- Java 的自动装箱拆箱
Java 是面向对象的语言,其基本数据类型也就有了相对应的类,称为包装类.以下是基本数据类型对应的包装类: 基本数据类型 包装类 byte(1字节) Byte short(2字节) Short int ...
- Java工具类:获取long型唯一ID
直接上代码: import java.text.SimpleDateFormat; import java.util.Date; /** * 获取long型唯一ID */ public class I ...
- UVA 10795 A Different Task(汉诺塔 递归))
A Different Task The (Three peg) Tower of Hanoi problem is a popular one in computer science. Briefl ...