3. 编译 jrtplib.lib 和 jthread.lib 需要注意 VC6 要求安装 Vs6sp6,在编译 jrtplib.lib 和 jthread.lib
前,在 project——settings——C/C++——Code generation:use run-time library 中,对于 debug,
选择:Debug Multithreaded DLL,对于 release,则选择:Multithreaded DLL。
4.首先编译 jthread 库,然后将 jthread-1.2.1\src 内的"jmutex.h"和"jthread.h"两个头文件放入
jrtplib-3.7.1\src 目录 下 ,然 后 将 jrtplib-3.7.1\src 文 件 夹 下所 有头文件 中 的 <jmutex.h> 和
<jthread.h>语句修改为"jmutex.h"和"jthread.h",需要修改的文件为 rtpudpv4transmitter.h、
rtpsession.h 和 rtppollthread.h。编译时注意编译方式和 jthread.lib 一致。
5.编译生成的 jthread.lib 和 jrtplib.lib 拷贝到系统目录:C:\Program Files\Microsoft Visual
Studio\VC98\Lib 下,将 jrtplib-3.7.1\src 下所有的.h 头文件复制到 C:\Program Files\Microsoft
Visual Studio\VC98\Include,以便以后使用。
6.现在 我们 就可以 编译 jrtplib-3.7.1\examples 下的实 例程序 了。建 立 VC 工 程,打 开
example1.c , 在 Project Settings 的 link 页 添 加 jthread.lib jrtplib.lib ws2_32.lib , 在
project——settings——C/C++——Code generation:use run-time library 中,对于 debug,选
择:Debug Multithreaded DLL,对于 release,则选择:Multithreaded DLL。
7.编译源程序,运行就 OK 啦
四、JRTPLIB 库的使用方法及程序实现
(1)JRTPLIB 函数的使用
a、在使用 JRTPLIB 进行实时流媒体数据传输之前,首先应该生成 RTPSession
类的一个实例来表示此次 RTP 会话,然后调用 Create() 方法来对其进行初始
化操作。JRTPLIB-3.7 中的 Create 方法为
Create (sessparams,&transparams)。其中的两个参数需要如下先定义:
RTPUDPv4TransmissionParams transparams;
RTPSessionParams sessparams;
sessparams.SetOwnTimestampUnit(1.0/8000.0);/*设置时间戳,1/8000 表示 1
秒钟采样 8000 次,即录音时的 8KHz*/
sessparams.SetAcceptOwnPackets(true);
transparams.SetPortbase(portbase);/*本地通讯端口*/
b、设置恰当的时戳单元,是 RTP 会话初始化过程所要进行的另外一项重要工作,
这是通过调用 RTPSession 类的 SetTimestampUnit() 方法来实现的,前面已经
提过。
c、当 RTP 会话成功建立起来之后,接下去就可以开始进行流媒体数据的实时传
输了。首先需要设置好数据发送的目标地址,RTP 协议允许同一会话存在多个目
标 地 址 , 这 可 以 通 过 调 用 RTPSession 类 的 AddDestination() 、
DeleteDestination() 和 ClearDestinations() 方法来完成。例如,下面的语
句表示的是让 RTP 会话将数据发送到本地主机的 6000 端口: