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
废话不多说,下面开始。
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
相关文章推荐
- hi3507/hi3515交叉编译live555
- hi3507/hi3515交叉编译live555
- hi3507/hi3515交叉编译live555
- Live555实战之交叉编译live555共享库
- 交叉编译live555MediaServer流媒体服务器RTP/RTCP, RTSP, SIP
- LIVE555再学习 -- DM368/Hi3516A 交叉编译
- live555在arm linux下的交叉编译,并下载的Arm板播放H264文件
- live555的交叉编译
- 交叉编译live555MediaServer流媒体服务器RTP/RTCP, RTSP, SIP 【转】
- 流媒体直播之二imx6 arm板的live555的交叉编译
- live555在arm linux下的交叉编译,并下载的Arm板播放H264文件
- Live555实战之交叉编译live555共享库
- live555 交叉编译移植到海思开发板
- 交叉编译 LIVE555 Streaming Media 的方法
- ffmpeg,live555,mplayer交叉编译
- Linux编译/交叉编译 live555
- Web服务器:live555在arm linux下的交叉编译,并下载的Arm板播放H264文件
- live555在arm linux下的交叉编译,并下载的Arm板播放H264文件
- live555 交叉编译移植到海思开发板
- [交叉编译qt4.8.4 for ARM]遇到到问题