zoukankan      html  css  js  c++  java
  • live555 交叉编译移植到海思开发板

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

    https://blog.csdn.net/sunxiaopengsun/article/details/79175408

    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

    [plain] view plain copy
     
    1. CROSS_COMPILE?=     arm-hisiv100nptl-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 =  

    然后与在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挂载到开发板上执行。运行后会出现

    [objc] view plain copy
     
    1. LIVE555 Media Server-Test frank                                                   
    2.         version 0.84 (LIVE555 Streaming Media library version 2014.10.07).        
    3. Play streams from this server using the URL                                       
    4.         rtsp://0.0.0.0/<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.         ".265" => a H.265 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.         ".ogg" or ".ogv" or ".opus" => an Ogg audio and/or video file             
    18.         ".ts" => a MPEG Transport Stream file                                     
    19.                 (a ".tsx" index file - if present - provides server 'trick play)  
    20.         ".vob" => a VOB (MPEG-2 video with AC-3 audio) file                       
    21.         ".wav" => a WAV Audio file                                                
    22.         ".webm" => a WebM audio(Vorbis)+video(VP8) file                           
    23. See http://www.live555.com/mediaServer/ for additional documentation.             
    24. (We use port 8for optional RTSP-over-HTTP tunneling, or for HT  
    [objc] view plain copy
     
    1.   

    测试的时候会发现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 就可以看到想要的结果,预祝成功。

    如何在hisi编译好的live555版本基础上修改成g++编译?

    将 所有工程中的CROSS_COMPILE变量设置为空即可。

  • 相关阅读:
    js 格式为2018-08-25 11:46:29 的日期比较方法
    ssh linux免密登录。。。。生产共钥到另一台主机
    linux shell脚本调用java main方法 代码传值
    linux shell脚本调用java main方法 代码
    java FTP各种操作
    java通过http服务执行shell命令
    linux ssh 应用
    java通过反射调用有参数的方法
    TranslucentTB汉化版安装教程及资源
    几行Python代码生成动态二维码 myqr的使用教程
  • 原文地址:https://www.cnblogs.com/ordinary-world/p/10458880.html
Copyright © 2011-2022 走看看