您的位置:首页 > 其它

hi3507/hi3515交叉编译live555

2017-10-23 15:08 423 查看
Live555 是一个为跨平台的C++开源项目,它实现了RTP/RTCP、RTSP、SIP等的支持。并且相对于其他的流媒体服务器是完全开源并且免费的。

废话不多说,下面开始。

1、首先到它的主页下载一个源码包:
http://www.live555.com/liveMedia/public/
我下载的是latest的,具体什么版本还真不清楚闭嘴

 

2、放到linux目录下解压:

[html] view plaincopy 

01. root@kubuntu:/home/frank tar zxvf live555-latest.tar.gz  

02. root@kubuntu:/home/frank# cd live  

03. root@kubuntu:/home/frank/live#  

 

3、首先尝试在PC的Linux上编译:

 区别于传统的源码包,不是传统的配置方式,而是通过genMakefiles配对目录下的config.*文件生成Makefile

[html] view plaincopy 

01. root@kubuntu:/home/frank/live# ./genMakefiles linux  

02. root@kubuntu:/home/frank/live# make  

编译很顺利,然后上网找一个*.264文件(常见的就是那个test.264在新闻报道奋斗)放在当前目录下

执行mediaServer目录下的live555MediaServer服务器原型

[html] view plaincopy 

01. root@kubuntu:/home/frank/live# ./mediaServer/live555MediaServer  

02. LIVE555 Media Server  

03.         version 0.75 (LIVE555 Streaming Media library version 2012.11.08).  

04. Play streams from this server using the URL  

05.         rtsp://192.168.1.41:8554/<filename>  

06. where <filename> is a file present in the current directory.  

07. Each file's type is inferred from its name suffix:  

08.         ".264" => a H.264 Video Elementary Stream file  

09.         ".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

[html] view plaincopy 

01. root@kubuntu:/home/frank/live# cat config.hi3507  

02. CROSS_COMPILE?=         arm-hismall-linux-  

03. COMPILE_OPTS =          $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64  

04. C =                     c  

05. C_COMPILER =            $(CROSS_COMPILE)gcc  

06. C_FLAGS =               $(COMPILE_OPTS)  

07. CPP =                   cpp  

08. CPLUSPLUS_COMPILER =    $(CROSS_COMPILE)g++  

09. 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上编译一样,进行编译。

[html] view plaincopy 

01. root@kubuntu:/home/frank/live# ./genMakefiles hi3507  

02. root@kubuntu:/home/frank/live# make clean;make  

这里要记得先make clean,否则因为之前在PC上编译的目标文件没清楚会导致链接失败。

 编译时会产生一个错误

[html] view plaincopy 

01. In file included from MPEG4GenericRTPSink.cpp:22:  

02. include/Locale.hh:47:123: xlocale.h: No such file or directory  

03. In file included from MPEG4GenericRTPSink.cpp:22:  

04. include/Locale.hh:62: error: `locale_t' does not name a type  

05. make[1]: *** [MPEG4GenericRTPSink.o] Error 1  

06. make[1]: Leaving directory `/home/frank/live/liveMedia'  

07. make: *** [all] Error 2  

这个是由于海思使用的是uClinux,并没有xlocale.h这个头文件,

而live555内部的一个locale模块调用了(见liveMeida/locale.hh),因此通过编译选项把他去掉。

修改config.hi3507,在编译选项上加入-DLOCALE_NOT_USED把此模块去掉。

[html] view plaincopy 

01. CROSS_COMPILE?=         arm-hismall-linux-  

02. COMPILE_OPTS =          $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64  

03. C =                     c  

04. C_COMPILER =            $(CROSS_COMPILE)gcc  

05. C_FLAGS =               $(COMPILE_OPTS)  

06. CPP =                   cpp  

07. CPLUSPLUS_COMPILER =    $(CROSS_COMPILE)g++  

08. CPLUSPLUS_FLAGS =       $(COMPILE_OPTS) -Wall -DBSD=1 -DLOCALE_NOT_USED  

09. 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并编译

[html] view plaincopy 

01. root@kubuntu:/home/frank/live# ./genMakefiles hi3507  

02. root@kubuntu:/home/frank/live# make  

编译成功!

再按照上述方法把程序放到hi3507上运行测试

 源码下载

FROM:  http://blog.csdn.net/lawishere/article/details/8182952
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: