live555 移植

 轉自:http://blog.csdn.net/lawishere/article/details/8182952

Live555 是一個爲跨平臺的C++開源項目,它實現了RTP/RTCP、RTSP、SIP等的支持。並且相對於其他的流媒體服務器是完全開源並且免費的。

廢話不多說,下面開始。

 

1、首先到它的主頁下載一個源碼包:

http://www.live555.com/liveMedia/public/

我下載的是latest的,具體什麼版本還真不清楚閉嘴

 

2、放到linux目錄下解壓:

  1. root@kubuntu:/home/frank tar zxvf live555-latest.tar.gz  
  2. root@kubuntu:/home/frank# cd live  
  3. root@kubuntu:/home/frank/live#  

 

3、首先嚐試在PC的Linux上編譯:
區別於傳統的源碼包,不是傳統的配置方式,而是通過genMakefiles配對目錄下的config.*文件生成Makefile

  1. root@kubuntu:/home/frank/live# ./genMakefiles linux  
  2. root@kubuntu:/home/frank/live# make  


編譯很順利,然後上網找一個*.264文件(常見的就是那個test.264在新聞報道奮鬥)放在當前目錄下

執行mediaServer目錄下的live555MediaServer服務器原型

  1. root@kubuntu:/home/frank/live# ./mediaServer/live555MediaServer  
  2. LIVE555 Media Server  
  3.         version 0.75 (LIVE555 Streaming Media library version 2012.11.08).  
  4. Play streams from this server using the URL  
  5.         rtsp://192.168.1.41:8554/<filename>  
  6. where <filename> is a file present in the current directory.  
  7. Each file's type is inferred from its name suffix:  
  8.         ".264" => a H.264 Video Elementary Stream file  
  9.         ".aac" => an AAC Audio (ADTS format) file  
  10.         ".ac3" => an AC-3 Audio file  
  11.         ".amr" => an AMR Audio file  
  12.         ".dv" => a DV Video file  
  13.         ".m4e" => a MPEG-4 Video Elementary Stream file  
  14.         ".mkv" => a Matroska audio+video+(optional)subtitles file  
  15.         ".mp3" => a MPEG-1 or 2 Audio file  
  16.         ".mpg" => a MPEG-1 or 2 Program Stream (audio+video) file  
  17.         ".ts" => a MPEG Transport Stream file  
  18.                 (a ".tsx" index file - if present - provides server 'trick play' support)  
  19.         ".wav" => a WAV Audio file  
  20.         ".webm" => a WebM audio(Vorbis)+video(VP8) file  
  21. See http://www.live555.com/mediaServer/ for additional documentation.  
  22. (We use port 8080 for optional RTSP-over-HTTP tunneling, or for HTTP live streaming (for indexed Transport Stream files only).)  

通過VLC可以點播rtsp://192.168.1.41:8554/test.264視頻,

(注意:test.264所在的目錄要和live555MediaServer執行目錄相一致,若test.264放在live目錄下,則需要在live目錄下執行./mediaServer/live555MediaServer)

 

4、交叉編譯

編譯器arm-hismall-linux-gcc/arm-hismall-linux-g++

同理如果通過genMakefiles生成交叉編譯的Makefile,我們需要一個對應的config.*

因此我們創建一個config.hi3507,內容可以參考config.armlinux

  1. root@kubuntu:/home/frank/live# cat config.hi3507  
  2. CROSS_COMPILE?=         arm-hismall-linux-  
  3. COMPILE_OPTS =          $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64  
  4. C =                     c  
  5. C_COMPILER =            $(CROSS_COMPILE)gcc  
  6. C_FLAGS =               $(COMPILE_OPTS)  
  7. CPP =                   cpp  
  8. CPLUSPLUS_COMPILER =    $(CROSS_COMPILE)g++  
  9. CPLUSPLUS_FLAGS =       $(COMPILE_OPTS) -Wall -DBSD=1  
  10. OBJ =                   o  
  11. LINK =                  $(CROSS_COMPILE)g++ -o  
  12. LINK_OPTS =  
  13. CONSOLE_LINK_OPTS =     $(LINK_OPTS)  
  14. LIBRARY_LINK =          $(CROSS_COMPILE)ar cr  
  15. LIBRARY_LINK_OPTS =     $(LINK_OPTS)  
  16. LIB_SUFFIX =                    a  
  17. LIBS_FOR_CONSOLE_APPLICATION =  
  18. LIBS_FOR_GUI_APPLICATION =  
  19. EXE =  

 

然後與在PC上編譯一樣,進行編譯。

  1. root@kubuntu:/home/frank/live# ./genMakefiles hi3507  
  2. root@kubuntu:/home/frank/live# make clean;make  

這裏要記得先make clean,否則因爲之前在PC上編譯的目標文件沒清楚會導致鏈接失敗。

編譯時會產生一個錯誤

  1. In file included from MPEG4GenericRTPSink.cpp:22:  
  2. include/Locale.hh:47:123: xlocale.h: No such file or directory  
  3. In file included from MPEG4GenericRTPSink.cpp:22:  
  4. include/Locale.hh:62: error: `locale_t' does not name a type  
  5. make[1]: *** [MPEG4GenericRTPSink.o] Error 1  
  6. make[1]: Leaving directory `/home/frank/live/liveMedia'  
  7. make: *** [all] Error 2  


這個是由於海思使用的是uClinux,並沒有xlocale.h這個頭文件,

而live555內部的一個locale模塊調用了(見liveMeida/locale.hh),因此通過編譯選項把他去掉。

修改config.hi3507,在編譯選項上加入-DLOCALE_NOT_USED把此模塊去掉。

 

  1. CROSS_COMPILE?=         arm-hismall-linux-  
  2. COMPILE_OPTS =          $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64  
  3. C =                     c  
  4. C_COMPILER =            $(CROSS_COMPILE)gcc  
  5. C_FLAGS =               $(COMPILE_OPTS)  
  6. CPP =                   cpp  
  7. CPLUSPLUS_COMPILER =    $(CROSS_COMPILE)g++  
  8. CPLUSPLUS_FLAGS =       $(COMPILE_OPTS) -Wall -DBSD=1 -DLOCALE_NOT_USED  
  9. OBJ =                   o  
  10. LINK =                  $(CROSS_COMPILE)g++ -o  
  11. LINK_OPTS =  
  12. CONSOLE_LINK_OPTS =     $(LINK_OPTS)  
  13. LIBRARY_LINK =          $(CROSS_COMPILE)ar cr  
  14. LIBRARY_LINK_OPTS =     $(LINK_OPTS)  
  15. LIB_SUFFIX =                    a  
  16. LIBS_FOR_CONSOLE_APPLICATION =  
  17. LIBS_FOR_GUI_APPLICATION =  
  18. EXE =  


再次生成Makefile並編譯

  1. root@kubuntu:/home/frank/live# ./genMakefiles hi3507  
  2. root@kubuntu:/home/frank/live# make  


編譯成功!

再按照上述方法把程序放到hi3507上運行測試


 源碼下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章