live555 交叉编译移植到海思开发板

本文章参考了。http://blog.csdn.net/lawishere/article/details/8182952,写了hi3518的配置说明。特此感谢

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文件放在当前目录下

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

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

同理如果通过genMakefiles生成交叉编译的Makefile,我们需要一个对应的config.*

因此我们复制一个config.hi3518,命令:cp config.armlinux config.hi3518

CROSS_COMPILE?=		arm-hisiv100nptl-linux-
COMPILE_OPTS =		$(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64
C =			c
C_COMPILER =		$(CROSS_COMPILE)gcc
C_FLAGS =		$(COMPILE_OPTS)
CPP =			cpp
CPLUSPLUS_COMPILER =	$(CROSS_COMPILE)g++
CPLUSPLUS_FLAGS =	$(COMPILE_OPTS) -Wall -DBSD=1 -DLOCALE_NOT_USED
OBJ =			o
LINK =			$(CROSS_COMPILE)g++ -o
LINK_OPTS =		
CONSOLE_LINK_OPTS =	$(LINK_OPTS)
LIBRARY_LINK =		$(CROSS_COMPILE)ar cr 
LIBRARY_LINK_OPTS =	$(LINK_OPTS)
LIB_SUFFIX =			a
LIBS_FOR_CONSOLE_APPLICATION =
LIBS_FOR_GUI_APPLICATION =
EXE =

然后与在PC上编译一样,进行编译。

  1. root@kubuntu:/home/frank/live# ./genMakefiles hi3518 
  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把此模块去掉。上面那段是已经去掉的

 再次生成Makefile并编译

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


编译成功!

5 移植到海思开发板上

将mediaServer的live555MediaServer(你可以试一下,在linux系统中打开这个是出错误的),通过nfs挂载到开发板上执行。运行后会出现

LIVE555 Media Server-Test frank                                                 
        version 0.84 (LIVE555 Streaming Media library version 2014.10.07).      
Play streams from this server using the URL                                     
        rtsp://0.0.0.0/<filename>                                               
where <filename> is a file present in the current directory.                    
Each file's type is inferred from its name suffix:                              
        ".264" => a H.264 Video Elementary Stream file                          
        ".265" => a H.265 Video Elementary Stream file                          
        ".aac" => an AAC Audio (ADTS format) file                               
        ".ac3" => an AC-3 Audio file                                            
        ".amr" => an AMR Audio file                                             
        ".dv" => a DV Video file                                                
        ".m4e" => a MPEG-4 Video Elementary Stream file                         
        ".mkv" => a Matroska audio+video+(optional)subtitles file               
        ".mp3" => a MPEG-1 or 2 Audio file                                      
        ".mpg" => a MPEG-1 or 2 Program Stream (audio+video) file               
        ".ogg" or ".ogv" or ".opus" => an Ogg audio and/or video file           
        ".ts" => a MPEG Transport Stream file                                   
                (a ".tsx" index file - if present - provides server 'trick play)
        ".vob" => a VOB (MPEG-2 video with AC-3 audio) file                     
        ".wav" => a WAV Audio file                                              
        ".webm" => a WebM audio(Vorbis)+video(VP8) file                         
See http://www.live555.com/mediaServer/ for additional documentation.           
(We use port 80 for optional RTSP-over-HTTP tunneling, or for HT




测试的时候会发现RTSP的地址是0.0.0.0;

在nfs挂载的时候,已经用ifconfig eth0 192.168.0.166 将板子的IP地址设为了192.168.0.166 ,为什么还是0 呢

需要用到route add default gw 192.168.0.1,这个192.168.0.1是网关的IP地址,也就是你的路由器的IP地址,命令意思的是添加一条默认网关命令,将所有的数据包都转发到192.168.0.1;注意开发板上是运行./live555MediaServer,发现时没有端口号的,直接rtsp://192.168.0.166 就可以看到想要的结果,预祝成功。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Frank范

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值