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

2024-02-22 03:18

本文主要是介绍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

[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 80 for 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变量设置为空即可。

这篇关于live555 交叉编译移植到海思开发板的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/733978

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码

开发板NFS挂载文件目录

文章目录 序NFS1. 安装 NFS 服务器和客户端在服务器上(NFS 服务器端)在客户端上(NFS 客户端) 2. 配置 NFS 服务器创建共享目录编辑 `/etc/exports` 文件启动 NFS 服务 3. 在客户端挂载 NFS 共享创建挂载点挂载 NFS 共享验证挂载 4. 设置开机自动挂载5. 解决权限问题 序 本节主要实现虚拟机(服务器)与开发板(客户端)通过N

Golang test编译使用

创建文件my_test.go package testsimport "testing"func TestMy(t *testing.T) {t.Log("TestMy")} 通常用法: $ go test -v -run TestMy my_test.go=== RUN TestMyTestMy: my_test.go:6: TestMy--- PASS: TestMy (0.

C++/《C/C++程序编译流程》

程序的基本流程如图:   1.预处理        预处理相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。 读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理将所有的“#define”删除,并且展开所有的宏定义处理所有的条件编译指令,如:“#if”、“