1、jrtplib简介
RTP
是目前解决流媒体实时传输问题的最好办法,要在
Linux
平台上进行实时传送编程,可以考虑使用一些开放源代码的
RTP 库,如 LIBRTP、JRTPLIB 等。JRTPLIB
是一个面向对象的 RTP 库,它完全遵循
RFC1889设计,在很多场合下是一个非常不错的选择。JRTPLIB
是一个用 C++ 语言实现的 RTP 库,这个库使用Socket
机制实现网络通讯 因此可以运行在
Windows、Linux、FreeBSD、Solaris、Unix和VxWorks
等多种操作系统上。
2、jrtplib的编译
(1) 此库在PC机Linux上的编译。
以下使用Readhat
9.0,内核版本为2.4。jrtplib库一般与jthread库一起使用。当jrtplib库单独使用时,确保主机系统上安装了GCC编译器。步骤如
下:进入安装目录configure;make;make
install。安装完把此库的include文件放到/usr/local/include下。当与jthread库一起使用时,先编译
jthread,并把此库编译后的include文件放在/usr/local/include下,然后再编译jrtplib库。
(2) jrtplib库应用于ARM9的交叉编译。
jrtplib与平台有关。jrtplib库的交叉编译指定的ARM编译工具链是arm-linux,而ARM7的交叉编译工具链是arm-elf,
因此在ARM9+Linux平台上实现。用arm-linux-gcc编译时,需做此库的交叉编译场景分析。经过多次尝试成功编译。具体做
法,configure前,在shell环境下输入两条语句export
config_BUILD_CC = gcc export config_TARGET_CC =
arm-linux-gcc,配置使用./configure --host =
arm-linux。在rtperrors.h中添加头文件stdio.h,否则编译会出现相应的问题。
若干注意问题:
1. arm-linux-gcc
-v
gcc version
3.4.1
2. 分别 进入 目录 jthread-1.2.1 jrtplib-3.7.1
export config_BUILD_CC=gcc
export
config_TARGET_CC=arm-linux-gcc
./configure --host=arm-linux
make
make install
3. vi src/rtperrors.h
添加 #include
4. vi src/rtpconfig_unix.h
注释
//#define RTP_BIG_ENDIAN // comment this if the target is a little
endian system
5. vi src/rtpsession.cpp
if (!gotlogin)
{
char *logname = getenv("LOGNAME");
char myname[] = {'R','u','n','S','h','e','n','g','\0'};
logname = myname;
if (logname == 0) //处理返回错误
return ERR_RTP_SESSION_CANTGETLOGINNAME;
strncpy((char *)buffer,logname,*bufferlength);
}
6. vi examples/Makefile //处理链接库
INCLUDES = -I /usr/local/include/jthread -I ../src/
LDADD = ../src/.libs/libjrtp.a -L/usr/local/lib/ -ljthread
-lpthread
7. cp -arf *.so 拷贝库
阅读(4068) | 评论(0) | 转发(0) |