CSDN里面的RTP的资料太少了 ,大家在此贴 畅所欲言 ,贴资料。资源共享啊!
解决方案 »
- VS 08 10 哪个更好点》高手给个意见啊
- 写了一个函数,第一次调用没有出问题,接着程序第二次在消息响应函数里面调用就出了问题?
- 求教高手,怎么给非当前窗口发送键盘消息。
- 初学控件,碰到个奇怪的问题,想不明白,望help!
- 大家帮忙阿!!!!看看这个错误。。马上结贴。。
- 高手给看看一个dll文件然后给出一个*.mof文件是啥意思?
- vc中什么叫subclass?
- 在VC中如何访问一个SQL的方法.(超高分)
- COM+中关于安全性的设置问题
- 自己编的Active X ocx 为何用到web上会有安全性警告,如何解决
- 程序调试时变量数值是以16进制显示的,怎样才能让以10进制显示?
- ? ★ 如何让Dialog中Edit控件具有默认的输入焦点?
http://community.csdn.net/Expert/TopicView.asp?id=4106373
看了一点RTP的资料,知道了RTP和RTCP包的结构,但是不知道具体怎么来填写这些包,以及处理这些包?(AntonlioX)
http://community.csdn.net/Expert/TopicView.asp?id=4103451
用SNIFFER抓到本机5000端口发出的RTP包,但是却发现本机并没有打开5000这个端口(elssann)
http://community.csdn.net/Expert/TopicView.asp?id=3417945
有人用过jrtplib
http://community.csdn.net/Expert/TopicView.asp?id=3448899
rtp协议中,如何定义时间戳,最好有例子,详细点的。(flyingjm)
http://community.csdn.net/Expert/TopicView.asp?id=3925249
我使用jrtplib2.7,里面的两个例子均编译成功,但不能发送数据.(mperry)
http://community.csdn.net/Expert/TopicView.asp?id=4029709
JRTPLIB3.1比较怪异的问题(lvzj)
http://community.csdn.net/Expert/TopicView.asp?id=3421445
下载了JRTPlib-3.0.2却生成 不了.lib(sweet_csu)
http://community.csdn.net/Expert/TopicView.asp?id=4056913
有用过JRTPLIB的吗?JRTPLIB收到的数据包是否已经排序排好了?(elssann)
http://community.csdn.net/Expert/TopicView.asp?id=3984364
rtp包头里的那个PT的各个值的意义是什么?哪里有资料?(elssann)
http://community.csdn.net/Expert/TopicView.asp?id=3919191
关于RTP的问题(newman1982)
http://community.csdn.net/Expert/TopicView.asp?id=3567909
怎样在VC中使用jrtplib?(在线等待)(mzlgc)
http://community.csdn.net/Expert/TopicView.asp?id=3787580
有谁用过RTP协议进行编程的,请给予指导,重谢!(mingzheng0609)
http://community.csdn.net/Expert/TopicView.asp?id=3607742
jrtplib-3.1.0
http://community.csdn.net/Expert/TopicView.asp?id=3706632
弱弱地问rtp/rtcp问题(aspvbjava)
http://community.csdn.net/Expert/TopicView.asp?id=3693790
编译问题,运行就出错,
http://community.csdn.net/Expert/TopicView.asp?id=3641065
下载了一个jrtplib,怎么配置才能编译通过??(longlinzfk)
http://community.csdn.net/Expert/TopicView.asp?id=3600377
winrtp-2.1.0在编译时提示需要的JNI.H和JNI.CPP在那里可以找到?(mzlgc)
http://community.csdn.net/Expert/TopicView.asp?id=3497741
关于jrtplib的问题,高手进来看看(wangshenwang1)
http://community.csdn.net/Expert/TopicView.asp?id=3436543
用Jrtplib2.7写个图片传输程序(sweet_csu)
http://community.csdn.net/Expert/TopicView.asp?id=3435464
如何判断传过来的数据包是RTP包,如何取出包中的视频或音频数据(z9851214)
http://community.csdn.net/Expert/TopicView.asp?id=3435380
寻找兼职,本人熟悉VC应用程序开发,WINCE的应用程序开发(使用EVC),包括PPC和smartphone,熟悉WINCE的驱动开发。(yrj)
50分!!求 RTP library的源码,有例子更好!!!(flyingjm)
http://community.csdn.net/Expert/TopicView.asp?id=3317014
高分,求RTP和RTCP和SIP等方面的资料啊???????????????(microgiant)
http://community.csdn.net/Expert/TopicView.asp?id=3266053
Linux
FreeBSD
HP-UX
Solaris
VxWorks
JRTPLIB 的官方首页为:http://lumumba.luc.ac.be/jori/jrtplib/jrtplib.htmlJRTPLIB 的第一个程序底下我们介绍过 JRTPLIB 的设计方法后, 大家就会发觉到 JRTPLIB 实在很好上手。要利用 RTP 通讯协议传送资料, 第一步要先建立一个 session, 方法如下:#include "rtpsession.h"int main(void)
{
RTPSession sess; sess.Create(5000);
return 0;
}
第一步我们要先把 rtpsession.h 给 include 进来:#include "rtpsession.h"接下来再产生 RTPSession 类别的对象:RTPSession sess;最后再建立 session 就完成最简单的初始动作了:sess.Create(5000);Create() 成员函数接收一个 portbase 的参数, 指定 session 的 port, 接着开始初始化 timestamp 与 packet sequence number。RTPSession::Create() 程序代码如下:int RTPSession::Create(int localportbase,unsigned long localip)
{
int status; if (initialized)
return ERR_RTP_SESSIONALREADYINITIALIZED;
if ((status = rtpconn.Create(localportbase,localip)) < 0)
return status;
if ((status = contribsources.CreateLocalCNAME()) < 0)
{
rtpconn.Destroy();
return status;
}
CreateNewSSRC();
localinf.CreateSessionParameters();
rtcpmodule.Initialize();
initialized = true;
return 0;
}Create() 接着会再建立一个 SSRC:CreateNewSSRC();SSRC 为 local synchronization source identifier。指定目的端接下来再指定目的端的 IP 地址:unsigned long addr = ntohl(inet_addr("127.0.0.1"));
sess.AddDestination(addr,5000);这里表示我们要将封包传送到 127.0.0.1 (本地端) 的 port 5000, 只要照着套用即可。传送 RTP 封包sess.SendPacket("1234567890",10,0,false,10);1234567890 是要传送的字符串, 第二个参数 (10) 表示传送字符串的长度, 第三个参数为 payload type, 第四个参数为 flag, 最后第五个参数则是 timestamp 的递增单位。RTP 的封包格式
RTP 与其它 Internet 通讯协议一样, 在封包里也会有封包档头, 接着才是封包的资料。在 RTPsession::SendPacket() 的第三个参数与第四个参数分别是 payload type 与 flag, 在 RTP 封包档头里, 分别是 Payload 字段与 M 字段。Payload 字段的长度为 7 bits, M 字段的长度为 1 bits。
RTP 的 Payload typeRTP 文件头的 Payload type 指定封包资料的编码方式, 我们列出五个常用的 Audio 标准, 与三个常用的 Video 标准, 其中 JPEG/H.261/H.263 我们本文第一篇里都有做过简单的介绍。常用的 Payload type 如下表:Payload type 编码标准 支持Audio或Video Clock Rate (Hz)
2 G.721 A 8000
4 G.723 A 8000
7 LPC A 8000
9 G.722 A 8000
15 G.728 A 8000
26 JPEG V 90000
31 H.261 V 90000
34 H.263 V 90000
RTP/RTCP(实时传输协议/实时传输控制协议)基于UDP派生出的协议,并增加了对实时传输的控制。一般用于网上传输实时视频数据,比如远程视频监控,视频点播等。有一本名叫《多媒体网络传输协议》的书上对此2个协议的结构和原理做了比较详细的介绍,好象是清华大学出版社出版的。
我去年做远程视频监控系统时,曾用基于2个协议,用Wonsock工具封装了一个网络传输动态连接库,专门用于局域网组播传输实时视频数据。以下是我针对此2个协议定义的相关C结构。
/*Current protocol version. */
#define RTP_VERSION 2
#define MIN_SEQUENTIAL 1
#define RTP_SEQ_MOD (1<<16)
#define RTP_MAX_SDES 255 /* maximum text length for SDES */
#define MID_BUFFER_NUM 2
#define MAX_DROPOUT 25typedef enum {
RTCP_SR = 200,
RTCP_RR = 201,
RTCP_SDES = 202,
RTCP_BYE = 203,
RTCP_APP = 204
} rtcp_type_t;typedef enum {
RTCP_SDES_END = 0,
RTCP_SDES_CNAME = 1,
RTCP_SDES_NAME = 2,
RTCP_SDES_EMAIL = 3,
RTCP_SDES_PHONE = 4,
RTCP_SDES_LOC = 5,
RTCP_SDES_TOOL = 6,
RTCP_SDES_NOTE = 7,
RTCP_SDES_PRIV = 8
} rtcp_sdes_type_t;/*
* RTP data header
*/
typedef struct {
unsigned int version:2; /* protocol version */
unsigned int p:1; /* padding flag */
unsigned int x:1; /* header extension flag */
unsigned int cc:4; /* CSRC count */
unsigned int m:1; /* er bit */
unsigned int pt:7; /* payload type */
u_int16 seq; /* sequence number */
u_int32 ts; /* timestamp */
u_int32 ssrc; /* synchronization source */
u_int32 csrc[1]; /* optional CSRC list */
} rtp_hdr_t;/*
* RTCP common header word
*/
typedef struct {
unsigned int version:2; /* protocol version */
unsigned int p:1; /* padding flag */
unsigned int count:5; /* varies by packet type */
unsigned int pt:8; /* RTCP packet type */
u_int16 length; /* pkt len in words, w/o this word */
} rtcp_common_t;/*
* Big-endian mask for version, padding bit and packet type pair
*/
#define RTCP_VALID_MASK (0xc000 | 0x2000 | 0xfe)
#define RTCP_VALID_VALUE ((RTP_VERSION << 14) | RTCP_SR)/*
* Reception report block
*/
typedef struct {
u_int32 ssrc; /* data source being reported */
unsigned int fraction:8; /* fraction lost since last SR/RR */
int lost:24; /* cumul. no. pkts lost (signed!) */
u_int32 last_seq; /* extended last seq. no. received */
u_int32 jitter; /* interarrival jitter */
u_int32 lsr; /* last SR packet from this source */
u_int32 dlsr; /* delay since last SR packet */
} rtcp_rr_t;/*
* SDES item
*/
typedef struct {
u_int8 type; /* type of item (rtcp_sdes_type_t) */
u_int8 length; /* length of item (in octets) */
char data[1]; /* text, not null-terminated */
} rtcp_sdes_item_t;/*
* One RTCP packet
*/
typedef struct {
rtcp_common_t common; /* common header */
union {
/* sender report (SR) */
struct {
u_int32 ssrc; /* sender generating this report */
u_int32 ntp_sec; /* NTP timestamp */
u_int32 ntp_frac;
u_int32 rtp_ts; /* RTP timestamp */
u_int32 psent; /* packets sent */
u_int32 osent; /* octets sent */
rtcp_rr_t rr[1]; /* variable-length list */
} sr; /* reception report (RR) */
struct {
u_int32 ssrc; /* receiver generating this report */
rtcp_rr_t rr[1]; /* variable-length list */
} rr; /* source description (SDES) */
struct rtcp_sdes {
u_int32 src; /* first SSRC/CSRC */
rtcp_sdes_item_t item[1]; /* list of SDES items */
} sdes; /* BYE */
struct {
u_int32 src[1]; /* list of sources */
/* can"t express trailing text for reason */
} bye;
} r;
} rtcp_t;
external SIP stack comparison
dissipate: C++; Linux, requries the qt-library, License: GPL; Homepage: http://www.div8.net/dissipate/; The original dissipate by Billy Biggs.
dissipate2: C++; Linux, requries the qt-library, License: GPL; Homepage: http://www.wirlab.net/kphone/; A enhanced dissipate, is part of the kphone distribution.
GNU osip: C; Linux+Windows+...; License: LGPL; Homepage: http://www.gnu.org/software/osip/; Also known as libosip. Note: The interface of osip has been changed and from now on it will be called osip2! Download the tar file from http://osip.atosc.org/download/osip/.
GNU eXosip: C; Linux+Windows+...; License: GPL; Homepage: http://savannah.nongnu.org/projects/exosip/; The extensible osip: "...It aims to implement a simple high layer API to control the SIP for sessions establishements and common extensions. Once completed, this eXtended library should provide an API for call management, messaging and presence features.... Download the tar file from http://osip.atosc.org/download/exosip/.
SIP from vovida.org: C++; Linux+Windows+...; License: Vovida Software License; Homepage: http://www.vovida.org/protocols/downloads/sip/
resiprocate: C++; Linux+Windows+...; Includes now a high level API (DialogUsageManager) which supports refers, ... License: VOCAL; Homepage: http://www.sipfoundry.org/reSIProcate/.
Microsoft RTC API: The Mircosoft RTC API is a high level SIP and RTP Stack. It's included in Windows XP and also comes with the several Windows Messenger. Version 1.2 introduced a lot of new features is behaves strange when used with other SIP clients. Developer Homepage: http://www.microsoft.com/downloads/details.aspx?FamilyID=ae0bdc75-9f2f-4217-b97f-dfa0adf264aa&displaylang=en.
sipXtackLib: Part of pingtel's open source releases for VoIP. License: LGPL; Homepage: sipfoundry.org. There is also a high level call library (sipXcallLib), which implements JTAPI in C++.
libmsip: A C++ SIP stack for Linux developed for the miniSIP project. Homepage: http://www.minisip.org/libmsip/.