live555 移植
转自:http://blog.csdn.net/lawishere/article/details/8182952
Live555 是一个为跨平台的C++开源项目,它实现了RTP/RTCP、RTSP、SIP等的支持。并且相对于其他的流媒体服务器是完全开源并且免费的。
废话不多说,下面开始。
1、首先到它的主页下载一个源码包:
http://www.live555.com/liveMedia/public/
我下载的是latest的,具体什么版本还真不清楚
2、放到linux目录下解压:
- root@kubuntu:/home/frank tar zxvf live555-latest.tar.gz
- root@kubuntu:/home/frank# cd live
- root@kubuntu:/home/frank/live#
3、首先尝试在PC的Linux上编译:
区别于传统的源码包,不是传统的配置方式,而是通过genMakefiles配对目录下的config.*文件生成Makefile
- root@kubuntu:/home/frank/live# ./genMakefiles linux
- root@kubuntu:/home/frank/live# make
编译很顺利,然后上网找一个*.264文件(常见的就是那个test.264在新闻报道)放在当前目录下
执行mediaServer目录下的live555MediaServer服务器原型
- root@kubuntu:/home/frank/live# ./mediaServer/live555MediaServer
- LIVE555 Media Server
- version 0.75 (LIVE555 Streaming Media library version 2012.11.08).
- Play streams from this server using the URL
- rtsp://192.168.1.41:8554/<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
- ".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
- ".ts" => a MPEG Transport Stream file
- (a ".tsx" index file - if present - provides server 'trick play' support)
- ".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 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
- root@kubuntu:/home/frank/live# cat config.hi3507
- CROSS_COMPILE?= arm-hismall-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
- 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上编译一样,进行编译。
- root@kubuntu:/home/frank/live# ./genMakefiles hi3507
- root@kubuntu:/home/frank/live# make clean;make
这里要记得先make clean,否则因为之前在PC上编译的目标文件没清楚会导致链接失败。
编译时会产生一个错误
- In file included from MPEG4GenericRTPSink.cpp:22:
- include/Locale.hh:47:123: xlocale.h: No such file or directory
- In file included from MPEG4GenericRTPSink.cpp:22:
- include/Locale.hh:62: error: `locale_t' does not name a type
- make[1]: *** [MPEG4GenericRTPSink.o] Error 1
- make[1]: Leaving directory `/home/frank/live/liveMedia'
- make: *** [all] Error 2
这个是由于海思使用的是uClinux,并没有xlocale.h这个头文件,
而live555内部的一个locale模块调用了(见liveMeida/locale.hh),因此通过编译选项把他去掉。
修改config.hi3507,在编译选项上加入-DLOCALE_NOT_USED把此模块去掉。
- CROSS_COMPILE?= arm-hismall-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 =
再次生成Makefile并编译
- root@kubuntu:/home/frank/live# ./genMakefiles hi3507
- root@kubuntu:/home/frank/live# make
编译成功!
再按照上述方法把程序放到hi3507上运行测试
live555 移植相关推荐
- live555移植ARM过程
文章目录 前言 一.下载live555 二.构建过程 1.主要的步骤 2.碰到的问题 总结 前言 将live555移植到飞凌OKA40i-C开发板. 开发环境:虚拟机上安装Ubuntu,64位机器. ...
- 海思移植Live555
海思移植Live555 移植Live555 移植openssl 移植Live555 下载live555 live下载地址 下载完毕后移植到虚拟机上解压 解压完毕后我们可以得到live这个文件夹 我们要 ...
- DM8168移植wis-streamer【8168定制】
8168网传模块主要由wis-streamer进程进行,主要功能是实现高清视频和音频的网络传输,它能够实现以下几个方面的功能: (1)能够对来自客户端的视频点播请求做出响应,实现高清视频和音频码流的实 ...
- CMake 基础用法,掌握 CMake 诀窍
CMake 是一个开源的.跨平台的工具系列,用于构建.测试和打包软件.CMake 用于使用简单的平台和编译器独立的配置文件(CMakeLists.txt)来控制软件编译过程,并生成可以在您选择的编译环 ...
- live555编译移植
1.在官网www.live555.com下载最新的源码包 2.解压进入live drwxrwxrwx 1 root root 4096 Jul 12 13:02 BasicUsageEnvironme ...
- LIVE555再学习 -- live555实现RTSP直播服务器 分析
上一篇文章 讲到了 live555实现RTSP直播服务器,但是篇幅有点长,没有来得及对源码进行分析. 这篇文章就好好看看,源码部分这次参看Linux版本下的 通过live555实现H264 RTSP直 ...
- LIVE555再学习 -- testRTSPClient 实例
上一篇文章简单看了一遍 testRTSPClient 的源码,接下来举几个应用实例加深一下. 首先什么都不做修改,先执行一遍,看一下. 一.执行 testRTSPClient 特么,上面的东西我没看 ...
- LIVE555再学习 -- OpenRTSP 源码分析
看了很多东西,感觉有点杂.源码分析部分也看了,讲的也就那样.现在有点不知道从哪讲起了. 参看:nkmnkm的专栏-流媒体 参看:smilestone322的专栏-live555 一.源码组成 包括上述 ...
- openssl 64位编译_海思hi3516dv300开发--live555交叉编译
1.live555下载 官网: LIVE555 Streaming Mediawww.live555.com 下载 .tar.gz后缀源码 解压: tar -zxvf live.2020.04.24 ...
最新文章
- python标准库学习4
- 李彦宏的百度 AI 落地战略,由王海峰来实现
- k8s 重要概念 - 每天5分钟玩转 Docker 容器技术(117)
- HDU 6156 Palindrome Function 数位DP
- spring cloud-zuul的Filter详解
- ssh-keys git
- [APIO2018]铁人两项——圆方树+树形DP
- Use Cases in an Agile Backlog
- 说说如何使用 Ant 把文件推送到 Linux
- 从壹开始前后端分离【 .NETCore2.1 +Vue 2 +AOP+DI】框架之一 || 前言
- 如何用matlaab把csv转为mat文件_如何编辑pdf文档?看大神们是如何操作的
- 线程范围内的线程共享(多线程)
- 解读戴尔,惠普和思科的“三角关系”
- Day 6 函数与模块
- 九大内置对象和servlet生命周期
- EM算法 --入门级详解
- 事后诸葛亮分析(小小大佬带飞队)
- Referring Image Segmentation 综述
- 银联云闪付开发联调步骤向导
- 磕磕绊绊的全景相机之路