live555 移植

2023-11-03

转自:http://blog.csdn.net/lawishere/article/details/8182952

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

废话不多说,下面开始。

 

1、首先到它的主页下载一个源码包:

http://www.live555.com/liveMedia/public/

我下载的是latest的,具体什么版本还真不清楚闭嘴

 

2、放到linux目录下解压:

[html]  view plain copy print ?
  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

[html]  view plain copy print ?
  1. root@kubuntu:/home/frank/live# ./genMakefiles linux  
  2. root@kubuntu:/home/frank/live# make  


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

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

[html]  view plain copy print ?
  1. root@kubuntu:/home/frank/live# ./mediaServer/live555MediaServer  
  2. LIVE555 Media Server  
  3.         version 0.75 (LIVE555 Streaming Media library version 2012.11.08).  
  4. Play streams from this server using the URL  
  5.         rtsp://192.168.1.41:8554/<filename>  
  6. where <filename> is a file present in the current directory.  
  7. Each file's type is inferred from its name suffix:  
  8.         ".264" => a H.264 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.         ".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 plain copy print ?
  1. root@kubuntu:/home/frank/live# cat config.hi3507  
  2. CROSS_COMPILE?=         arm-hismall-linux-  
  3. COMPILE_OPTS =          $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64  
  4. C =                     c  
  5. C_COMPILER =            $(CROSS_COMPILE)gcc  
  6. C_FLAGS =               $(COMPILE_OPTS)  
  7. CPP =                   cpp  
  8. CPLUSPLUS_COMPILER =    $(CROSS_COMPILE)g++  
  9. 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 plain copy print ?
  1. root@kubuntu:/home/frank/live# ./genMakefiles hi3507  
  2. root@kubuntu:/home/frank/live# make clean;make  

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

编译时会产生一个错误

[html]  view plain copy print ?
  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把此模块去掉。

 

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


再次生成Makefile并编译

[html]  view plain copy print ?
  1. root@kubuntu:/home/frank/live# ./genMakefiles hi3507  
  2. root@kubuntu:/home/frank/live# make  


编译成功!

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


 源码下载




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

live555 移植 的相关文章

  • VRRP简介与配置

    一 VRRP介绍 1 VRRP作用 VRRP协议中文名称虚拟路由冗余协议 应用在路由器上 其作用是某一路由器损坏或链路出现问题立刻切换到另一个路由器上不影响整个网络的运行 更好的保障网络通信 2 VRRP实现原理 VRRP的原理 就是将多个
  • Go语言面试题--进阶提升(1)

    文章目录 1 下面的代码输出什么 2 下面哪一行代码会 panic 请说明原因 3 下面哪一行代码会 panic 请说明原因 4 下面的代码有什么问题 1 下面的代码输出什么 type N int func n N test fmt Pri
  • 奥的斯电梯服务器不显示菜单,奥的斯电梯调试服务器按键介绍.doc

    奥的斯电梯调试服务器按键介绍 doc 由会员分享 可在线阅读 更多相关 奥的斯电梯调试服务器按键介绍 doc 2页珍藏版 请在文库网上搜索 1 奥的斯电梯调试服务器 俗称ST 按键介绍 奥的斯电梯调试服务器 俗称ST 按键介绍 ST的前面板

随机推荐

  • 高阶函数 /内联函数/高阶函数中使用内联函数/闭包函数/内置高阶函数( let、also、with、run、apply )

    一 高阶函数 高阶函数的定义 高阶函数是指将一个函数作为另一个函数的参数或者将一个函数作为另一个函数的返回值 与java不同的是 在Kotlin中增加了一个函数类型的概念 如果我们将这种函数添加到另一个函数的参数声明或返回值声明当中 那么这
  • Mac及Xcode使用相关问题记录

    1 连接samba服务器 方法 finder gt 前往 gt 连接服务器 输入服务器地址smb 169 254 43 44 连接即可 2 xcode设置快捷键 xcode gt Prefrences gt Key Bindings 修改如
  • 程序中有游离的‘\240’ ‘\302’问题的解决方法

    错误 程序中有游离的 240 302 sed i s o240 o302 g test c
  • oracle问题排查

    目录 问题1 ORA 01017 invalid username password logon denied 问题2 链接普通用户报错ORA 01034 ORACLE not available 问题1 ORA 01017 invalid
  • 独自封装windows 10系统详细教程(一)

    目录 作者语录 一 封装前准备工具 二 安装Windows系统 1 创建虚拟机环境 2 更改BIOS启动顺序 3 安装windows系统 作者语录 这篇文章从无到有 从小白到会轻轻松松的事 超级详细的过程 方面你们操作实践 对你们有用的给我
  • 【C/C++】输出格式%d、%6d、%06d、%-6d、%.6f的区分

    C C 输出格式 d 6d 06d 6d 6f的区分 文章目录 C C 输出格式 d 6d 06d 6d 6f的区分 1 d 普通的整数输出 2 6d 整数输出 宽度是6位 不足左边补空格 3 06d 整数输出 宽度是6位 不足左边补数字0
  • Linux的命令——“cd”(内附Linux命令格式,相对路径和绝对路径)

    内容预知 目录 1 Linux的 命令格式书写 1 2 选项的用法 1 3 参数 2 绝对路径与相对路径 3 对终端中默认 root localhost 的认识 4 七种文件类型 5 命令cd 总结 1 Linux的 命令格式书写 1 1
  • S5PV210开发1.0.5----重定位relocate与SDRAM

    目录 1 5 1 关看门狗 1 5 2 设置栈 调用C语言 1 5 3 开iCache 1 5 4 重定位及其代码实战 1 5 5 SDRAM介绍 1 用汇编关看门狗 1 1 什么是看门狗 watch dog timer 定时器 Soc的内
  • nginx resolver

    背景 nginx 配置proxy pass后 访问接口出现no resolver defined to resolve错误 或者接口直接502 404 需要配置 nginx resolver server server name wfk m
  • 使用jetty-maven-plugin插件进行测试

    为了能够使用maven的jetty插件对项目进行测试 需要进行如下操作 1 修改maven配置文件 为了能够在命令行中使用jetty命令 需要修改maven的配置文件settings xml文件 添加如下配置代码 html view pla
  • 关于Incapsula reese84加密的特征研究

    最近研究了下reese84的加密算法 基本上两个参数的加密 utmvc和token 因为nodejs调用会有内存问题 没有采用补环境的方式解决 用python扣的算法 1 utmvc参数的生成是一个ob混淆 ast处理之后调试难度不是很大
  • tensorflow学习笔记(3)——基础(三)——TF训练和变量

    5 tensorflow实现神经网络 1 TF游乐场及神经网络简介 TF游乐场 http playground tensorflow org 略 使用神经网络解决分类问题的主要步骤 1 提取特征向量作为输入 2 定义神经网络结构 得到输出
  • vue3+ts+mock

    项目地址 使用vite创建的vue3 ts项目 集成了mock vuex 项目截图 修改主题 项目克隆及运行 克隆 git clone https gitee com liwensa vue3 tsmock git 进入项目运行 npm i
  • 深度学习中常见的损失函数

    目录 一 损失函数的定义 二 常见的回归损失函数 1 L1 LOSS MAE平均绝对误差 2 L2 LOSS MSE均方差误差 3 Smooth L1 LOSS 4 IOU LOSS及其各种变种 三 常见的分类损失函数 1 交叉熵损失函数
  • Linux删除含有特殊符号文件名的文件

    1 使用 ls i 查处该文件的 inode 号 假设为123 2 使用find命令删除 rm find inum 123 如果是目录 rm rvf find inum 123
  • Going deeper with convolutions(InceptionNet)

    进一步深化卷积 Abstract 摘要 我们提出了一个代号为Inception的深度卷积神经网络架构 该架构负责设置2014年ImageNet大规模视觉识别挑战赛 ILSVRC14 中用于分类和检测的新技术 该体系结构的主要标志是提高了网络
  • 一个例子理解梯度下降法(附梯度下降法与最小二乘法比较)

    一个例子理解梯度下降法 例子描述 梯度下降法简介 基于python3 matplotlib的实现代码 梯度下降法实现 最小二乘法实现 比较结果 总结 最近听课时 AI导论老师留下了一个简单的线性回归例子 这个例子属于单变量线性回归 可以用梯
  • Ajax入门

    文章目录 axios体验 axios 查询参数 常用请求方法 数据提交 axios错误处理 axios体验 引入axios库 使用axios语法 axios url 目标资源地址 then result gt 对服务器返回的数据做后续处理
  • 识别图片中曲线并获取其坐标

    识别图片中曲线并获取其坐标 github主页 https github com Taot chen 有时候需要用到一些数据库里面曲线图的数据 进行进一步的变换处理 但是很多时候都只有图片 没有数据 基于这个问题 给出了以下算法 思路 1 通
  • live555 移植

    转自 http blog csdn net lawishere article details 8182952 Live555 是一个为跨平台的C 开源项目 它实现了RTP RTCP RTSP SIP等的支持 并且相对于其他的流媒体服务器是