在Linux中编译jrtplib

来源:互联网 发布:冬未了 知乎 编辑:程序博客网 时间:2024/06/05 20:04

 

1.jrtplib 是什么

         jrtplib是一个基于C++、面向对象的RTP封装库, jrtplib支持定义于RFC3550中的RTP协议,它使得发送和接收RTP报文变得异常简单,用户不用担心SSRC冲突,也不用考虑如何传输RTCP数据,因为RTCP功能完全在内部实现,不需用户手动操作。当发送RTP报文时,用户只需简单的给发送函数提供负载数据;当接收数据时,jrtplib提供了访问传入的RTP和RTCP数据的接口。

2.下载地址(3.11.1最新版本)

在官方网站下载最新的jrtplib、jthreadlib和cmake源码,如果主机上没有安装过cmake,请先下载安装最新的cmake版本,最新的jrtplib、jthreadlib需要通过cmake来安装。我们可以用cmake -version来检查一下当前机器上cmake的版本;

(1)http://research.edm.uhasselt.be/jori/page/CS/Jrtplib.html   (下载不同压缩包的jrtplib源码)

Several package formats are available:

    jrtplib-3.11.1.tar.bz2

    jrtplib-3.11.1.tar.gz

    jrtplib-3.11.1.zip

(2)http://research.edm.uhasselt.be/jori/page/CS/Jthread.html      (下载对应jrtpl版本的jthread源码)

如The library itself:

    In '.tar.gz' format: jthread-1.3.3.tar.gz

    In '.tar.bz2' format: jthread-1.3.3.tar.bz2

    In '.zip' format: jthread-1.3.3.zip

3.编译说明

jrtp有两种数据接收方式:

第一种是用jthread库提供的线程自动在后台执行对数据的接收。

第二种是用户自己调用RTPSession中的Poll方法。

如果采取第一种方法则要安装jthread库,则安装 jthread,而且 jthread-1.3.3必须先与jrtp-3.11.1的安装。因为在jrtp-3.11.1的configure中,会查找系统是否有编译了jthread库,

如果有,那么编译的jrtp库会开启对jthread的支持。因此如果先编译jrtp在编译jthread,编译出来的jrtp是没有开启对jthread的支持的。如果采用第二种方法,那么可以不用编译jthread库,而直接编译jrtp库。

4.编译过程

(1)编译jthread

将下载的压缩包解压后进入jthread-1.3.3目录中,修改该目录下的CMakeLists.txt;

cmake_minimum_required(VERSION 3.0)

project(jthread)

set(VERSION 1.3.3)

#************************************star add****************************** 

SET(CMAKE_SYSTEM_NAME Linux)

#Setting up the C compiler  

SET(CMAKE_C_COMPILER "gcc")

#Setting up the C++ compiler

SET(CMAKE_CXX_COMPILER "g++")

#set install path 该目录是自己设定的目录

set(CMAKE_INSTALL_PREFIX "/home/heyan/RTP/testrtp/rtpcomplie")

#************************************end add****************************** 

include(CheckCXXSourceCompiles)

 

set (_DEFAULT_LIBRARY_INSTALL_DIR lib)

if (EXISTS "${CMAKE_INSTALL_PREFIX}/lib32/" AND CMAKE_SIZEOF_VOID_P EQUAL 4)

        set (_DEFAULT_LIBRARY_INSTALL_DIR lib32)

elseif (EXISTS "${CMAKE_INSTALL_PREFIX}/lib64/" AND CMAKE_SIZEOF_VOID_P EQUAL 8)

        set (_DEFAULT_LIBRARY_INSTALL_DIR lib64)

endif ()

 

set(LIBRARY_INSTALL_DIR "${_DEFAULT_LIBRARY_INSTALL_DIR}" CACHE PATH "Library installation directory")

if(NOT IS_ABSOLUTE "${LIBRARY_INSTALL_DIR}")

        set(LIBRARY_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIBRARY_INSTALL_DIR}")

endif()

 

find_package(Threads)

if (NOT CMAKE_USE_WIN32_THREADS_INIT)

        if (NOT CMAKE_USE_PTHREADS_INIT)

                message(FATAL_ERROR "Can find neither pthread support nor Win32 thread support")

        endif (NOT CMAKE_USE_PTHREADS_INIT)

endif (NOT CMAKE_USE_WIN32_THREADS_INIT)

 

add_subdirectory(src)                                                                                                                                                                                                                                                                           修改之后保存,分别输入如下的命令:

cmake CMakeLists.txt

make

make install

之后我们可以在设置的安装路径下看到/home/heyan/RTP/testrtp/rtpcomplie /include/jthread里面是jthread的头文件,/home/heyan/RTP/testrtp/rtpcomplie/bin

包含了jthread的相关库;

(2)编译jrtplib

解压安装包之后,进入jrtplib-3.11.1目录,同样修改该目录下的CMakeLists.txt



修改之后保存,分别输入如下的命令:

cmake CMakeLists.txt

make

make install

之后我们可以在设置的安装路径下看到/home/heyan/RTP/testrtp/rtpcomplie/include/ jrtplib3里面是jrtplib3相关的头文件,/home/heyan/RTP/testrtp/rtpcomplie/bin里面是包含了jrtplib3的相关库;

5.测试example

在jrtplib-3.11.1/examples里面有测试代码


测试的结果如下:


 

 

原创粉丝点击