在Linux中编译jrtplib
????????????????????????????????????????????????????????????????? 在Linux中編譯jrtplib
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(VERSION3.0)
project(jthread)
set(VERSION1.3.3)
#************************************staradd******************************?
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")
#************************************endadd******************************?
include(CheckCXXSourceCompiles)
?
set(_DEFAULT_LIBRARY_INSTALL_DIR lib)
if(EXISTS "${CMAKE_INSTALL_PREFIX}/lib32/" AND CMAKE_SIZEOF_VOID_PEQUAL 4)
??????? set (_DEFAULT_LIBRARY_INSTALL_DIRlib32)
elseif(EXISTS "${CMAKE_INSTALL_PREFIX}/lib64/" AND CMAKE_SIZEOF_VOID_PEQUAL 8)
??????? set (_DEFAULT_LIBRARY_INSTALL_DIRlib64)
endif()
?
set(LIBRARY_INSTALL_DIR"${_DEFAULT_LIBRARY_INSTALL_DIR}" CACHE PATH "Libraryinstallation directory")
if(NOTIS_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 "Canfind 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里面有測試代碼
測試結果如下:
?
總結
以上是生活随笔為你收集整理的在Linux中编译jrtplib的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android各种动画效果
- 下一篇: 软件设计师备考-软件设计师教程第五版