【live555】live555实战-编译与使用

1.live555交叉编译

代码下载

github速度较慢,所以选gitee的镜像下载

git clone https://gitee.com/mirrors/live555.git

根据README.md的说明,如果想要编译linux环境下的库文件和可执行程序

./genMakefiles linux
make -j4

实际执行的是config.linux的配置文件,同理如果想编译其他平台可以执行对应的配置文件后缀名

基于aarch64架构的交叉编译

1.修改配置文件:需要以config.armlinux配置文件以基础来修改

2.适配C++库版本:

如果嵌入式系统的C++库版本低于C++20,您需要在config.armlinux文件的COMPILE_OPTS项中追加-DNO_STD_LIB。这一步是必要的,以避免因版本不兼容导致的语法报错。

3.处理openssl库依赖:

如果嵌入式系统中没有安装openssl库,您需要在config.armlinux文件的COMPILE_OPTS项中追加-DNO_OPENSSL=1。这样做可以防止因缺少openssl库而导致的编译错误。

4.BasicTaskScheduler.cpp中还有一个变量的定义要修改一下

image

BasicTaskScheduler0.cpp中

image

image

image

BasicUsageEnvironment0.hh中

image

原config.armlinux:

CROSS_COMPILE?=		arm-elf-
COMPILE_OPTS =		$(INCLUDES) -I/usr/local/include -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 = -lssl -lcrypto
LIBS_FOR_GUI_APPLICATION =
EXE =

修改后

CROSS_COMPILE?=		arm-elf-
COMPILE_OPTS =		$(INCLUDES) -I/usr/local/include -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DNO_STD_LIB -DNO_OPENSSL=1
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 =

在live555目录下创建一个build.sh的脚本

touch build.sh
chmod 777 build.sh

添加脚本内容如下:

#!/bin/bash

LIVE555_DIR=`pwd`

cd $LIVE555_DIR

INSTALL_DIR=$LIVE555_DIR/output
mkdir -p $INSTALL_DIR

#编译成静态库
export LDFLAGS="-static"

#声明交叉编译器的路径
#export PATH=/opt/arm-gcc/bin/:$PATH

./genMakefiles armlinux
make -j$(nproc) CROSS_COMPILE=aarch64-linux-gnu-

make install PREFIX=$INSTALL_DIR CROSS_COMPILE=aarch64-linux-gnu-

执行脚本就会开始编译和安装,如无报错,表示编译安装成功,工程目录下会出现一个一个output的目录

zx@zx:~/mysoft/live555$ ls ./output/
bin  include  lib

查看bin目录下的文件是否为aarch64架构

zx@zx:~/mysoft/live555$ file ./output/bin/testH264VideoStreamer 
./output/bin/testH264VideoStreamer: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=37a8895d70362122ac13a6f5c141ad57d1bfb4e4, for GNU/Linux 3.7.0, not stripped
zx@zx:~/mysoft/live555$ 

交叉编译安装成功,下一步就是将可执行文件推入目标板中运行测试。

2.live555MediaServer实测

将交叉编译出来的live555MediaServer推到树莓派中,在其同级目录下要放一个test.264的视频流文件作为视频源

我所使用的test.h264文件是在树莓派上通过v4l2取流编码后输出保存到文件中的,关于v4l2取流到x264编码最后输出到文件中保存,可以参考【树莓派】【v4l2】在树莓派环境下取流-编码-存储_raspberry v4l2-CSDN博客

在执行live555测试前,先检查一下h264文件是否是正确的AnnexB格式(带起始码 0x00000001),以下就是正确的格式-

pi@raspberrypi:~/app $ hexdump -C test.264 | head
00000000  00 00 00 01 67 42 c0 28  a6 80 50 05 ba 10 00 00  |....gB.(..P.....|
00000010  03 00 10 00 00 03 03 c8  f1 83 2a 00 00 00 01 68  |..........*....h|
00000020  ce 3c 80 00 00 01 06 05  ff ff 5e dc 45 e9 bd e6  |.<........^.E...|
00000030  d9 48 b7 96 2c d8 20 d9  23 ee ef 78 32 36 34 20  |.H..,. .#..x264 |
00000040  2d 20 63 6f 72 65 20 31  36 34 20 72 33 30 39 35  |- core 164 r3095|
00000050  20 62 61 65 65 34 30 30  20 2d 20 48 2e 32 36 34  | baee400 - H.264|
00000060  2f 4d 50 45 47 2d 34 20  41 56 43 20 63 6f 64 65  |/MPEG-4 AVC code|
00000070  63 20 2d 20 43 6f 70 79  6c 65 66 74 20 32 30 30  |c - Copyleft 200|
00000080  33 2d 32 30 32 32 20 2d  20 68 74 74 70 3a 2f 2f  |3-2022 - http://|
00000090  77 77 77 2e 76 69 64 65  6f 6c 61 6e 2e 6f 72 67  |www.videolan.org|

然后执行树莓派端执行./live555MediaServer

image

PC端使用vlc拉流,串流地址填rtsp://192.168.3.17:8554/<filename>,我使用的测试文件名是test.h264,那么串流地址就是rtsp://192.168.3.17:8554/test.264

image

posted @ 2026-01-12 22:36  Emma1111  阅读(3)  评论(0)    收藏  举报