首页 > 代码库 > ortp库使用入门

ortp库使用入门

一、简介

ORTP是一个支持RTP以及RFC3550协议的库,有如下的特性:
(1)使用C语言编写,可以工作于windows, Linux, 以及 Unix平台
(2)实现了RFC3550协议,提供简单易用的API。支持多种配置,RFC3551为默认的配置。
(3)支持单线程下的多个RTP会话,支持自适应抖动处理。
(4)基于GPL版权声明。

ORTP可以在其官方网站上(http://www.linphone.org/index.php/eng/code_review/ortp)下载,下载解压后得到ORTP的源码包和示例程序(tests)。其帮助文档在docs目录下,也可以在 http://mirror.veriportal.com/savannah/linphone/ortp/docs/在线查看。

关于ORTP的资料并不多,主要是其源码、帮助文档以及示例程序,关于示例程序说明如下:
rtprecv.c 和rtpsend.c 展示了如何接收和发送单RTP数据流。
mrtprecv.c mrtpsend.c 展示了如何同时接收和发送多个RTP数据流。

二、主要函数介绍

ortp_init
【原型】:void ortp_init( void)
【功能】:初始化ORTP库,在使用ORTP API前需要首先调用本函数。

ortp_exit 
【原型】:void ortp_exit ( void)
【功能】:结束ORTP的使用。

rtp_session_new
【原型】:RtpSession* rtp_session_new (int mode)
【功能】:RtpSession为RTP会话的结构体对象,本函数创建一个新的RTP会话对象。
【参数】:mode为RTP_SESSION_SENDONLY(只发送)或者 RTP_SESSION_RECVONLY (只接收)、RTP_SESSION_SENDRECV(既发送也接收)等
【返回值】:指向新创建的RTP会话对象的指针。

rtp_session_set_remote_addr
【原型】:int rtp_session_set_remote_addr( RtpSession * session,const char *addr,int port)
【功能】:设置远程RTP数据接收端的IP地址
【参数】:
session :已经创建的RTP会话对象
addr :   目的地址的IP
port :   目的地址的rtp端口号
【返回值】:0表示成功。

rtp_session_set_local_addr
【原型】:int rtp_session_set_local_addr(RtpSession *session,const char *addr,int port)
【功能】:设置本地监听地址,如果rtp会话设置为只发送模式,则不需要调用本函数。如果是非只发送模式,并且没有调用本函数,则系统模式设置本地IP为0.0.0.0,并且随机分配一个监听端口。
【参数】:
session :已经创建的RTP会话对象
addr   : 本地监听的IP
port    :本地监听的端口号,如果给-1,则系统随机分配一个端口号

rtp_session_set_send_payload_type
【原型】:int rtp_session_set_send_payload_type(RtpSession *session,int paytype)
【功能】:设置RTP会话的负载类型。负载类型用来告诉播放器传输的是哪种类型的媒体(例如H.264,MPEG-4等,播放器才知道格式,才会调用适当的编解码器去播放。
【参数】:
session :已经创建的RTP会话对象
paytype: 负载类型(整数)
【返回值】:0表示成功,-1表示该负载类型未定义

rtp_session_get_recv_payload_type
【原型】:int rtp_session_get_recv_payload_type(const RtpSession *session) 
【功能】:获取当前的rtp数据流的媒体类型
【返回值】: 媒体类型(整数)

rtp_session_send_with_ts
【原型】:int rtp_session_send_with_ts(RtpSession *session,const char *buffer, int len,uint32_t userts) 
【功能】:向目的地址发送rtp数据包
【参数】:
session :已经创建的RTP会话对象
buffer  :包含要发送数据的缓冲区
len    : 要发送的数据长度
userts  : 被发送数据的时间戳,具体内容请参考RFC协议
【返回值】: 成功发送的字节数

rtp_session_recv_with_ts
【原型】:int rtp_session_recv_with_ts(RtpSession *session,uint8_t *buffer,int len,uint32_t ts,int *have_more)
【功能】:接收/读取发送端发来的rtp数据包
【参数】:
session :已经创建的RTP会话对象
buffer  : 存放接收的rtp数据包的缓冲区
len    : 接收的数据长度
ts     : 指定的数据包时间戳,在第一次调用本函数时,建议从0开始。
have_more: 当参数中buffer缓冲区大小不足时,此标志置1,来提示调用者再次以同一时间戳获取剩余的数据。

rtp_session_destroy
【原型】: void rtp_session_destroy(RtpSession *session)
【功能】:摧毁rtp会话对象,释放资源
【参数】:session已经创建的RTP会话对象

ortp库使用入门