1. 程式人生 > >如何將testRTSPClient從live555程式碼中分離出來,並建議第一個eclipse工程

如何將testRTSPClient從live555程式碼中分離出來,並建議第一個eclipse工程

live555提供了強大的rtsp視訊處理程式,更可喜的是在testProgs資料夾裡提供了好多外部呼叫的測試程式。在開發自己的應用程式時,我們希望根據需要將testProgs某個程式分離出來,而把live555只編譯成共享庫就不再動它。最好能夠將基於live555寫的程式碼放在一個eclipse工程檔案裡,管理使用就方便多了。現在就介紹一下如何將testRTSPClient分離出來,然後介紹如何建立eclipse工程。

一、將live555編譯成共享庫

下載live555原始碼檔案,我下載的是live.2016.06.26.tar.gz,將其解壓到Ubuntu系統下,然後執行下面的命令生成Makefile檔案:

./genMakefiles  linux-with-shared-libraries
然後執行 Make 和 Make install命令,完成編譯和安裝。

編譯後的lib庫在/usr/local/lib下,如下圖所示:


接下來,執行testProgs下的testRTSPClient程式,例如接收海康攝像機的視訊,命令為“./testRTSPClient rtsp://admin:[email protected]:554/h264/ch01/main/av_stream ”,正常啟動的時候,能夠看到控制檯不斷顯示接收到的視訊和音訊的基本資訊。

這裡執行testRTSPClient,它呼叫的還是本地的連結庫而不是/usr/local/lib下的庫。為了方便測試,我們將testRTSPClient複製到/home/Desktop資料夾下,此時再執行該程式會提示找不到庫。解決該檔案有兩種方法,一種是設定PATH全域性變數,方法請參考我的另一個關於設定環境變數的部落格

點選開啟連結。其實還有一種很簡便的方法。新建一個指令碼live_lqc.sh,內容如下,其實就是將這四個檔案從/usr/local/lib/下複製到 /usr/lib下。這樣你可以完全控制所有的檔案,並且這四個檔案其實都是快捷方式,不會導致佔用太多額外的空間。

#!/bin/bash
cp /usr/local/lib/libliveMedia.so.52 /usr/lib
cp /usr/local/lib/libgroupsock.so.8  /usr/lib
cp /usr/local/lib/libBasicUsageEnvironment.so.1 /usr/lib
cp /usr/local/lib/libUsageEnvironment.so.3  /usr/lib
然後再執行testRTSPClient就可以了。

二、在eclipse中執行testRTSPClient程式

在Ubuntu裡安裝eclipse。然後新建一個CPP工程,我的名稱為RTSPDecode。右擊該工程,選擇“屬性”,首先制定include標頭檔案位置,參考下面的配置:

需要說明的一點是為什麼不能只寫一個“/usr/local/include”,而必須將四個都加進來。你隨便開啟一個live裡面的頭部引用,都是直接寫的檔名,沒有指定路徑,例如#include "groupsock_version.hh",但是標頭檔案是分佈在liveMedia等四個資料夾裡的。如果這裡不將四個子目錄加進來,在編譯的時候就會出現找不到有檔案的錯誤。

然後設定共享庫名稱,方法請參考下面截圖,注意庫名稱的寫法,不要錯了。因為我們將庫的連結複製到/usr/lib下了,所以這裡不用設定庫的搜尋路徑了。


然後建立兩個檔案rtspdecode.h和rtspdecode.cpp。

環境配置好之後,剩下的工作就很簡單了,其實將testRTSPClient.cpp的內容全部複製到rtspdecode.cpp中編譯就可以運行了。作者為了便於我們學習,將所有的內容都放在這一個檔案裡了,為了規範,可以將標頭檔案引用、類等放在rtspdecode.h中。編譯成功後,接受海康攝像機視訊,控制檯輸出為:


以後我們將在這個檔案進一步封裝,使其能夠接受、解碼並顯示。後續部落格正在更新中。

OK!

相關推薦

如何testRTSPClientlive555程式碼分離出來建議一個eclipse工程

live555提供了強大的rtsp視訊處理程式,更可喜的是在testProgs資料夾裡提供了好多外部呼叫的測試程式。在開發自己的應用程式時,我們希望根據需要將testProgs某個程式分離出來,而把l

postman實現response headers獲取cookie其設置為環境變量

png header 參數 ESS 數組 字段 分割 src 圖片 1.最近在學習postman的使用方法,為了保證後續模塊操作,必須在登錄時獲取的session值,並將其設置為環境變量,session的位置處於response headers裏面返回的set-cookie

[學習筆記] 在Eclipse使用Hibernate,建立一個Demo工程資料庫為Oracle XE

前文參考:Oracle 11g xe 在windows安裝 在Eclipse中使用Hibernate 安裝 Hibernate Tools 外掛 https://tools.jboss.org/downloads/ Add the following URL to your Eclipse 4.13 (2

《編寫可維護的JavaScript》讀書筆記之程式設計實踐-配置資料程式碼分離

將配置資料從程式碼中分離出來 任何時候修改原始碼都會有引入 bug 的風險,且只修改一些資料的值也會帶來一些不必要的風險。精心設計的應用應當將關鍵資料從主要的原始碼中抽離出來,因為資料是不應當影響指令的正常執行。 什麼是配置資料 配置資料是應用中寫死(har

java入門練習題(三):讀入一組整數(不超過20個)當用戶輸入0時表示輸入結束;然後程式這組整數把第二大的整數找出來把它打印出來

 程式意義:讀入一組整數(不超過20個),當用戶輸入0時,表示輸入結束;然後程式將從這組整數中,把第二大的整數找出來,並把它打印出來。  說明:(1)0表示輸入結束,它本身並不計入這組整數中。            (2)在這組整數中,既有整數又有負數;          

《已測試通過》輸入兩個整數 n 和 m數列123.......n 隨意取幾個數,使其和等於m ,要求其中所有的可能組合列出來並且按每個組合的字典序排列輸出,每行輸出一種組合

參考網上很多,瑪德都不測試的嗎?就貼出來了?浪費時間。網際網路精神在哪!!! import java.util.ArrayList; import java.util.Comparator; import java.util.LinkedList; import java.util.Scanne

Qml實用技巧:樣式style物件獨立出來可使多個按鈕載入同一個樣式

需求         多個按鈕使用同一個樣式 原理         寫成元件形式(在或不在當前檔案中),需要樣式時,Button載入style即可 程式碼 Item { Rectangle {

android out目錄原始碼分離出來

Android系統編譯成功後的程式碼預設放在原始碼目錄下的out目錄中,我們需要將out目錄分離出來,可以在環境變數中新增 OUT_DIR_COMMON_BASE="/androidsource/out",如果你的工作目錄中存在 /work/android_branch1,

Android 讓你的 Room 搭上 RxJava 的順風車 重複的程式碼解脫出來

什麼是 Room ? 谷歌為了幫助開發者解決 Android 架構設計問題,在 Google I/O 2017 釋出一套幫助開發者解決 Android 架構設計的方案:Android Architecture Components,而我們的 Room 正是這套方案的兩大模組之一。 定義:資料庫解決方案 組

ASM程式碼分析MFC與ATL在COM元件開發的差異和優劣

主要是通過C++中的模板和多重繼承的語言特性,從ASM彙編層面,來分析MFC與ATL的差異和優劣。 MFC程式碼部分 MFC中,一個COM類可以包含多個介面,每個介面物件都是一個COM類的成員變數。 例如IWelcome,IMath介面物件就是

網頁程式碼查詢所需內容

2018年11月09日 17:40:52 huavhuahua 閱讀數:6 個人分類: 爬蟲

android 開啟一個任意檔案,環信抽取出來

android 開啟一個任意檔案,從環信中抽取出來的 1.使用方法 File file = new File(Environment.getExternalStorageDirectory(), "/4873641464161346955.jpg");

記錄quicklink原始碼發散出來的知識點

最近Google Chrome lab的一個開源專案quicklink很火,號稱可以極大提升頁面的載入速度,社群中也有很多使用該專案來做頁面載入優化的嘗試,但quicklink專案本身的實現其實極為簡潔,原始碼總共不過百行而已,其思路也不復雜,就是通過在瀏覽器空閒階段預載入view-port內的外部資源連結

如何JSP的java程式碼的值傳入JS程式碼

經過大半天的研究摸索,終於弄明白怎麼把JSP中的java程式碼中的值,傳入JS程式碼中去。 由於自己才剛剛開始接觸javaWEB 開發,今天在那兒做使用者登入功能,使用者在未登入時顯示“登入”連結,登入後在原來“登入”的地方,改變為使用者的暱稱!由於自己一點經驗也沒有,以為就一個session就夠了,在

《WebGL程式設計指南》---示例程式碼學習WebGL之初識【1】

寫在前面  筆者希望學習WebGL很久了,但是鑑於種種的事一直沒有開展,恰好研究生複試過了,在這空檔時間段內想學一門新技術,於是想到了WebGL,經前同事推薦,果斷買了《WebGL程式設計指南》這本書,於是,我的學習之旅就開始了。對於程式設計人員來說,案例程式碼是最好的教科書

iOS storyboard 實現動畫不用檢視拖到程式碼

實現思路 通過改變Constraint.constant的值來改變檢視的位置 實現步驟 在storyboard中設定好佈局 將要修改的Constraint連線成屬性到程

語句的單詞扣出來排序的wordSearch類

這是第一種有排序的情況下,大寫字母會先排序結果感覺會要不到自己想要的結果 package com.wordSearch.cc; import java.io.BufferedReader; impo

一個lucene程式一個資訊寫入到索引庫、根據關鍵詞把物件索引庫提取出來、lucene讀寫過程分析

新建一個Java Project :LuceneTest 準備lucene的jar包,要加入的jar包至少有:1)lucene-core-3.1.0.jar     (核心包) 2)lucene-analyzers-3.1.0.jar    (分詞器) 3)lucene-h

[App Store Connect幫助]八、維護您的 App(2) App App Store 移除

一個 -c 範圍 p s store 恢復 右上角 src head 如果您不想繼續向顧客提供您的 App,您可以將其從 App Store 中移除,這樣會移除該 App 的所有版本。擁有該 App 先前版本的用戶將無法更新 App,但只要您的合約有效,用戶便仍可下載最新的

python3 簡單實現csv文件讀取內容對內容進行分類統計

tmp spa writer ict 打開文件 while 類型 spl blog 新手python剛剛上路,在實際工作中遇到如題所示的問題,嘗試使用python3簡單實現如下,歡迎高手前來優化import csv #打開文件,用with打開可以不用去特意關閉file了