live555的移植和使用

Linux version 4.15.0,Ubuntu 16.04.12,hi3518ev200开发板,OV9712摄像头,VLC

一、移植

1.直接下载或直接找镜像下低版本后面能少报点错,本人使用live.2019.06.28.tar.gz

wget http://live555.com/liveMedia/public/live.2023.06.20.tar.gz

2.解压

tar -vxf live.2023.06.20.tar.gz

3.进入live555下,复制一份arm版本,备份配置文件

cd /home/lu/linuxjc/nfs/rtsp/live
cp config.armlinux config.myarm

4.添加自己的交叉编译环境和宏-DLOCALE_NOT_USED

vim config.myarm
CROSS_COMPILE?=   /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin/arm-hisiv300-linux-                                                                
COMPILE_OPTS =      $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DLOCALE_NOT_USED

5.生成Makefile,每次修改配置文件后都要执行(很多开源库不会给Makefile,会给config,需要自己先生成Makefile)

./genMakefiles myarm

6.编译

make

7.解决报错

找不到openssl的库文件

8.下载openssl,本人使用openssl-1.1.1h.tar.gz

wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1s.tar.gz

9.解压

tar -vxf openssl-1.1.1s.tar.gz 

10.配置config脚本,--prefix=后添加openssl生成文件的目标目录(创建自己的路径),--cross-compile-prefix=后添加海思交叉编译链

./config no-asm no-async shared --prefix=/home/lu/linuxjc/HI3518EV200/ssl --cross-compile-prefix=/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin/arm-hisiv300-linux-

 11.进入Makefile,去掉两个-m64

cd Makefile

12.编译

make -j4

13.查看libssl.so.1.1是否位32位ARM版本

file libssl.so.1.1

 

14.安装

sudo make install

15.查看是否安装成功

cd /home/lu/linuxjc/HI3518EV200/ssl/lib
file libssl.so.1.1

 

16.将libcrypto.so和libssl.so链接到海思交叉编译环境的lib库下

sudo cp -R lib*  /opt/hisi-linux/x86-arm/arm-hisiv300-linux/arm-hisiv300-linux-uclibcgnueabi/lib

17.查看是否链接成功

ls /opt/hisi-linux/x86-arm/arm-hisiv300-linux/arm-hisiv300-linux-uclibcgnueabi/lib

 

18.回到live555目录下继续编译,无报错即成功

make

 二、使用

1.将live555和mpp复制到nfs下

2.打开开发板配置ip,挂载nfs

3.进入/mnt/nfs/rtsp/live/mediaServer下,运行./live555MediaServer,可见live555支持.264文件

 4.由于海思生成的是.h264文件,所以需要更改海思代码(不熟悉的话,最好不要更改live555的代码),并且更改保存文件的路径

4-1.打开sample_venc.c文件,找到对应函数SAMPLE_COMM_VENC_StartGetStream右键跳转到定义

4-2.跳转到sample_comm_venc.c文件,选中函数SAMPLE_COMM_VENC_StartGetStream继续跳转到定义

 4-3.跳转到此处往下翻,找到sprintf更改保存路径/mnt/nfs/rtsp/live/mediaServer/stream_chn

4-4.选中SAMPLE_COMM_VENC_GetFilePostfix,继续跳转到定义

 4-5.将.h264更改为.264

 5.后台运行live555

./live555MediaServer &

6.查看是否后台运行

ps aux

 7.加载摄像头驱动

cd /mnt/nfs/mpp/ko
./load3518e -a -sensor ov9712 -osmem 32 -total 64

8..查看设备是否加载成功,多了设备

ls /dev

 9.运行程序

cd /mnt/nfs/mpp/sample/venc
./sample_venc 0
c

10.打开VLC,进行拉流(摄像头运行保存视频到搭建的rtsp服务器下也就是live555,使用VLC输入网络链接进行拉流)

rtsp://192.168.11.123/stream_chn0.264

11.有名管道和共享内存(共享内存很麻烦,需要对c++非常熟悉)

使用有名管道

12.更改海思代码,创建有名管道

13.由于有三个通道(三种分辨率),因此使用通道时需要更改通道数量,防止播放时分辨率来回切换

 14.保存编译mpp

cd /home/lu/linuxjc/nfs/rtsp/mpp
make clean
make

15.返回到开发板,运行程序

cd /mnt/nfs/mpp/sample/venc
./sample_venc 0
c

16.打开VLC,将生成的myfifo.264文件填入

rtsp://192.168.11.123/myfifo0.264

17.正常是运行第一次,生成管道文件,VLC一直连接不上;然后不关VLC,删除管道文件,正常退出程序,再次运行程序,VLC就连接成功了。

18.异常情况解决

由于写的管道代码过于简单,存在诸多不稳定性,会导致管道创建失败,程序自动退出等问题,可进行多次尝试(杀死后live555或重启开发板),若还不成功,可等待第二天再次尝试(本人亲测)。当然,也可完善管道代码或求助。

本人成功过程(成功案例不唯一,仅供参考)

18-1.准备好一切后第一次运行,异常退出,查看路径下未生成myfifo.264文件;

18-2.接着第二次运行正常,生成了myfifo.264文件,打开VLC,挂载路径,毫无反应。

 18-3.按两次回车正常退出,删除生成的myfifo.264文件(只能有一个管道文件),VLC不退出,再次第三次运行,生成了myfifo.264文件,VLC成功显示实时播放,但显示如下。

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值