云计算百科
云计算领域专业知识百科平台

在嵌入式板子上搭建和自定义live555服务器---编译问题和方法整理

live555 官方网站

点我直达,live555是一个简单的专注于实现RTSP服务器的开源库。它自带解析H264 H265 mp3等源的API,有一个简单的推流文件参考RTSP服务器例程testH264VideoStreamer也有官方实现的LIVE555 Media Server。无论是命令行使用还是用API实现定制需求是很方便的。

图龙宝刀点击下载

文章目录

  • live555 官方网站
  • 编译过程 && 问题:
    • 板上执行
  • live555 简单分析
    • 一次标准的RTSP交互流程
    • 官方的H264例程分析
  • 如何实现一个自己的RTSP流(.h264)
  • 后记

编译过程 && 问题:

解压

tar gzvf live.2024.04.19.tar.gz

编译是执行genMakefiles you_choice,生成MakeFile,然后再走流程,官方提供了一个默认的交叉编译config.armlinux,我们复制一份,自行复制成config.myarmlinux后,进行修改:

CROSS_COMPILE?=/home/qd06/ak39AV100-v109/tools/gcc-build/arm-anycloud-linux-uclibcgnueabi/bin/arm-linux-
COMPILE_OPTS =$(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DNO_OPENSSL=1 -DLOCALE_NOT_USED
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 -Wno-deprecated -std=c++11 -std=gnu++11
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
# 我这个设备是嵌入式局域网,不需要openssl
#LIBS_FOR_CONSOLE_APPLICATION = -lssl -lcrypto
LIBS_FOR_GUI_APPLICATION =
EXE =
# 指定make install 后的输出目录
PREFIX =/home/qd06/live555/output

$COMPILE_OPTS 的部分选项: NO_OPENSSL=1 不需要openssl, 如果需要ssl,可以在这个链接获取 LOCALE_NOT_USED点这,在live555下载与交叉编译章节处


$CPLUSPLUS_FLAGS 部分选项: -Wno-deprecated 官方文档要求的 If you’re using “gcc” version 3.0 or greater: You may also wish to add the -Wno-deprecated flag to CPLUSPLUS_FLAGS. -std=c++11 -std=gnu++11 我这个版本的live555使用了11语法,要加上这个支持.

执行生成Makefile:

./genMakefiles myarmlinux

执行make

make -j4


我这里遇到的问题就是 在这里插入图片描述 简单查阅了一下,原来是 std::atomic_flag没有这个test方法,于是根据这个修改方法为test_and_set()即可。

  • 有的朋友可能遇到奇奇怪怪的编译顺序问题,类似live555 undefined reference to `HashTable::create(int)\’这样,找不到实现的方法了,根据这个博主的方法可以妥善解决。

一般到这里也解决了,如果在引入项目后编译时报错找不到实现,可以根据这篇文章修改索引库的顺序为libliveMedia.a libBasicUsageEnvironment.a libgroupsock.a libUsageEnvironment.a,即可。保证libliveMedia.a 是首位即可。

板上执行

live555默认是静态库编译的,编译完成后可以直接去bin文件夹里获取可执行文件,这里我们使用官方自带的很完善的RTSP服务器live555MediaServer: 文档直达

./live555MediaServer

输出以下内容就算成功: 在这里插入图片描述


live555 简单分析

一次标准的RTSP交互流程

#mermaid-svg-Y7ETJVMWwGb7TqhW {font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fi

赞(0)
未经允许不得转载:网硕互联帮助中心 » 在嵌入式板子上搭建和自定义live555服务器---编译问题和方法整理
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!