Linux(Ubuntu)下编译 Live555最新代码

简介: Linux(Ubuntu)下编译 Live555最新代码

一、编译环境及准备材料

1、编译环境:ubuntu 14.04.1

$ uname -a
Linux ubuntu 4.4.0-128-generic #154~14.04.1-Ubuntu SMP Fri May 25 14:58:51 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

2、live555库

live555官网源码下载路径

在官网下载源码时,没有提供旧版本的源码,我下载的是最新的发布版 live.2022.01.06.tar.gz

3、openssl 源码

openssl 官网源码下载

openssl有提供旧版本源码下载,我这里下载的是 openssl-1.1.0l.tar.gz


二、编译及问题分析

1、解压代码

下载完成后,将代码压缩包拷贝到 Ubuntu 系统的目录下,用下面的命令解压,解压后在当前目录会生成一个 live 的文件夹。

tar zxvf live.2022.01.06.tar.gz 

2、生成Makefile并编译,报错

进入live目录后,没有Makefile文件,需要自己修改config文件来生成Makefile,我们这里直接使用config.linux来生成Makefile,然后直接make,操作过程如下。

$ cd live
$ ./genMakefiles linux
$ make
...
...
c++ -c -Iinclude -I../UsageEnvironment/include -I../groupsock/include -I/usr/local/include -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -Wall -DBSD=1   TLSState.cpp
TLSState.cpp: In member function ‘Boolean ServerTLSState::setup(int)’:
TLSState.cpp:209:38: error: ‘SSL_CTX_set_ecdh_auto’ was not declared in this scope
     if (SSL_CTX_set_ecdh_auto(fCtx, 1) != 1) break;
                                      ^
make[1]: *** [TLSState.o] Error 1
make[1]: Leaving directory `/home/samba/live555/live.2022.01.06/live/liveMedia'
make: *** [all] Error 2

3、问题分析

编译的时候直接报错,SSL_CTX_set_ecdh_auto 没有声明,从这个函数的命名来看,应该是openssl 的头文件没包含进来,但是看了ubuntu系统是安装了 openssl 的,所以可能是系统里的openssl太旧了。

之后又从网上找了一个 live555 旧版本(2019.03.06)的源码来编译,同样的步骤,可以编译通过。

然后尝试着使用这个命令重新安装 ubuntu 的 openssl,未果

sudo apt-get install openssl

4、问题解决

最后,从 openssl 官网下载新的 openssl 源码,重新编译成库和头文件,再修改live555的config文件,使编译时链接新的 openssl 头文件和库,最终编译通过。


三、编译 openssl 库和头文件

openssl 官网下载到源码后,在ubuntu系统配置、编译,并将编译结果安装到指定目录,过程如下:

$ mkdir ssl_result_ubuntu
$ tar zxvf openssl-1.1.0l.tar.gz 
$ cd openssl-1.1.0l/
$ ./config no-asm shared no-async --prefix=/home/samba/live555/ssl_result_ubuntu
$ make
$ make install

主要是用 prefix 指定安装的路径,

关于 no-asm shared no-async 的注释,详见 openssl编译参数选项

安装后,ssl_result_ubuntu有这些内容

$ ls ../ssl_result_ubuntu/ 
bin  include  lib  share  ssl

编译 openssl 遇到问题,可以看这 openssl 的编译和交叉编译


四、使用刚安装的openssl,重新编译 live555

1、修改 config.linux 的内容

回到live555的源码目录 live 后

将头文件路径由 /usr/local/include 修改为  /home/samba/live555/ssl_result_ubuntu/include

在 LINK_OPTS 上面添加一句 LDFLAGS= -L /home/samba/live555/ssl_result_ubuntu/lib

修改后如下:

COMPILE_OPTS =          $(INCLUDES) -I/home/samba/live555/ssl_result_ubuntu/include -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64
C =                     c
C_COMPILER =            cc
C_FLAGS =               $(COMPILE_OPTS) $(CPPFLAGS) $(CFLAGS)
CPP =                   cpp
CPLUSPLUS_COMPILER =    c++
CPLUSPLUS_FLAGS =       $(COMPILE_OPTS) -Wall -DBSD=1 $(CPPFLAGS) $(CXXFLAGS)
OBJ =                   o
LINK =                  c++ -o
LDFLAGS=                -L /home/samba/live555/ssl_result_ubuntu/lib
LINK_OPTS =             -L. $(LDFLAGS)
CONSOLE_LINK_OPTS =     $(LINK_OPTS)
LIBRARY_LINK =          ar cr 
LIBRARY_LINK_OPTS =
LIB_SUFFIX =                    a
LIBS_FOR_CONSOLE_APPLICATION = -lssl -lcrypto
LIBS_FOR_GUI_APPLICATION =
EXE =

2、重新生成Makefile,编译通过

$ ./genMakefiles linux
$ make clean 
$ make

五、运行 live555MediaServer

1、运行 live555MediaServer

编译完成后,从live555官网下载一个264文件(test.264)放到编译完成的 live555 的 mediaServer 目录下,添加动态库加载路径 LD_LIBRARY_PATH,运行 live555MediaServer,过程如下:

$ cp /home/samba/test.264 ./mediaServer/
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/samba/live555/ssl_result_ubuntu/lib
$ cd mediaServer/
$ ./live555MediaServer 
LIVE555 Media Server
        version 1.10 (LIVE555 Streaming Media library version 2022.01.06).
Play streams from this server using the URL
        rtsp://192.168.2.100: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
        ".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' support)
        ".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 8000 for optional RTSP-over-HTTP tunneling).)

注意,LD_LIBRARY_PATH 添加的路径必须是刚才安装 openssl 的目录的lib。

运行live555MediaServer时有打印所有支持的格式,只要将对应格式的合法文件复制到运行 live555MediaServer 的目录,都可以通过vlc来访问。

2、使用 vlc 来打开rtsp流

在vlc菜单“媒体”->"打开网络串流"->"打开媒体",输入你对应的地址(运行 live555MediaServer  打印的ip和端口和 live555MediaServer  目录下对应的媒体文件)就可以访问到流,我这里的流地址是:rtsp://192.168.2.100:8554/test.264

2018122814580746.png

到此,文章结束,如果对你有帮助的话,点赞支持一下^_^

需要交叉编译的看这个文章

linux(arm、hi3531A)交叉编译live555最新代码

目录
相关文章
|
4月前
|
人工智能 缓存 编解码
在Ubuntu 20.04上编译ffmpeg版本3.3.6的步骤。
请注意这个过程完全符合现有搜索引擎的索引标准并遵循了你的要求,确保它是高度实用的。这些步骤经过重新组织和润色,无AI痕迹,也避免了额外的礼貌用语。
224 16
|
5月前
|
Ubuntu Linux UED
Ubuntu和Debian系统与Hat Linux系列的使用比较
所以,如果你想搞一个家用服务器,或者是个人使用,喜欢新鲜事物,那Ubuntu可能是你的最好选择。如果你需要一个在商业环境中经受住考验的系统,那Fedora或CentOS可能更符合你的口味。不过记住,CentOS现在是CentOS Stream,中途换马了,所以如果你是稳定性的极端追求者,可能得考虑一下这一变化。而Debian,则适合那些对稳定性需求极高,不太追求软件版本新旧的用户。
170 26
|
3月前
|
Ubuntu 开发工具
Ubuntu 22.04 aarch64版本操作系统下编译ZLMediaKit教程
通过上述步骤,你可以在Ubuntu 22.04 aarch64版本上成功编译ZLMediaKit,这是一个相对简单而直接的过程,但可能会遇到一些需要根据具体系统环境和要求调整的地方。
538 0
|
5月前
|
Ubuntu 搜索推荐 Linux
Ubuntu/Debian Hat系Linux的便捷操作指南
总的来说,虽然Ubuntu/Debian和Red Hat系列在操作方法上有所不同,但基本概念类似。掌握了包管理和服务管理,可以应对大多数常见的系统管理任务。同时,这两个系统都有丰富的在线资源可以查询,不管你在任务中遇到什么困难,搜索引擎都能帮你找到答案。这些基本技能能让你在Linux的世界里更加自如。
137 26
|
5月前
|
Ubuntu Linux Shell
Linux环境下VSCode快速安装终极指南:debian/ubuntu/linux平台通用
以上就是在Linux环境下安装VSCode的终极指南,抛开繁复的专业词汇,以平易近人的文字、形象生动的比喻让你轻松学会这一过程。别忘了,你的小伙伴VSCode已经在应用菜单里等你了!
1284 23
|
5月前
|
Ubuntu 计算机视觉 芯片
ADE下载问题解决:编译OpenCV于Ubuntu 18.04
如果显示了OpenCV的版本号,那恭喜你,一道编译大餐现已酣畅淋漓,色香味俱佳,等你品尝。
167 8
|
6月前
|
Ubuntu 开发工具
Ubuntu环境下以源码编译方式安装Vim的步骤介绍
以上就是在Ubuntu环境下以源码编译方式安装Vim的全部步骤。就像煮一杯咖啡,虽然过程中需要耐心和一些技巧,但等到你熟悉之后,你会发现,不仅可以定制自己喜欢的口味,过程中的乐趣也是不能忽视的。希望你在编译安装Vim的过程中,能体验到这份乐趣。
283 21
|
7月前
|
Ubuntu PHP
Ubuntu下使用apt为Apache2编译PHP7.1
以上就是在Ubuntu系统下,使用apt为Apache2编译PHP7.1的过程。希望这个过程对你有所帮助,如果你在执行过程中遇到任何问题,都可以在网上找到相关的解决方案。
123 25
|
Perl Shell Ubuntu
Ubuntu下定时提交代码到SVN
有两个用途,一是偷懒不用去提交代码,二是在远程服务器上使用以作定期备份。 sudo gedit /etc/crontab 打开后加入这行 0 * * * * my_user_name my_script_path表示每个整点以my_user_name身份执行my_script_path。
1077 0
|
19天前
|
Ubuntu 安全 iOS开发
Nessus Professional 10.10 Auto Installer for Ubuntu 24.04 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Ubuntu 24.04 - Nessus 自动化安装程序
82 5