如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流

news2025/1/12 21:09:07

如何在armv6 armv6 armv8 aarch64 嵌入式板子上面安装nginx服务器支持推送H265的视频流

      • 开始吧
    • 一,准备工作
    • 二,configure时遇到的出错问题
      • 1、checking for C compiler … found but is not working
      • 2,error: can not detect int size
      • 3,解决完上面两处报错后,继续执行configure命令。
    • 三,make前的需要修改的地方
    • 四,注意
    • 支持拉H265的rtmp的VLC播放工具

为什么要在板子瑞芯微rv1126核心板上面安装nginx服务器,是因为我的项目需要用到拉到连接在板子上面的摄像头,由于是摄像头是直连摄像头的只能通过板子上面的wifi热点设备,先连接这个热点才能获取到这个网络摄像头,那么就需要板子做一个推流的服务器让摄像头的画面能够被手机和电脑访问到。

我这边是在代码里面获取rtsp网络摄像头然后通过nginx的rtmp模块推送出去

开始吧

一,准备工作

在这里插入图片描述
先准备上面的这些资源文件,还有就是安装好你的交叉编译工具(arm-buildroot-linux-gnueabihf)我这边是用在rv1126(arm32)上面的,如果你是arm64像3588的这种,就选择相对应的交叉编译工具即可

二,configure时遇到的出错问题

解压完成先进入nginx-1.18.0-code/nginx-f8052414dbe9/auto把configure文件拷贝到nginx-f8052414dbe9目录下,再回到nginx-f8052414dbe9目录执行以下命令。

./configure --with-cc=/opt/atk-dlrv1126-toolchain/usr/bin/arm-linux-gnueabihf-gcc --with-cpp=/opt/atk-dlrv1126-toolchain/usr/bin/arm-linux-gnueabihf-g++ --prefix=/home/erics/Desktop/nginx/20230722a5gFlHUe/nginx-1.18./nginx_install --without-http_gzip_module --with-http_ssl_module --without-http_upstream_zone_module --with-http_auth_request_module --add-module=/home/erics/Desktop/nginx/20230722a5gFlHUe/nginx-1.18./nginx-http-flv-module-master --with-pcre=/home/erics/Desktop/nginx/20230722a5gFlHUe/nginx-1.18./pcre-8.44 --with-zlib=/home/erics/Desktop/nginx/20230722a5gFlHUe/nginx-1.18./zlib-1.2.11 --with-openssl=/home/erics/Desktop/nginx/20230722a5gFlHUe/nginx-1.18./openssl-1.1.1f

1、checking for C compiler … found but is not working

在这里插入图片描述
解决办法:找到auto/cc/name文件并打开,找到如下并修改代码

if [ $ngx_found = no ]; then
        echo
        echo $0: error: C compiler $CC is not found
        echo
        #exit 1 // 这行注释掉
fi

2,error: can not detect int size

在这里插入图片描述

解决方法:找到auto/types/sizeof文件并打开找到如下代码

if [ -x $NGX_AUTOTEST ]; then
    ngx_size=`$NGX_AUTOTEST`
    echo " $ngx_size bytes"
fi

armv6 armv7 (arm32)改成如下

if [ -x $NGX_AUTOTEST ]; then
    ngx_size=4
    echo " $ngx_size bytes"
fi

这里要注意如果你是arrch64( armv8(aarch64)的需要修改成下这样

if [ -x $NGX_AUTOTEST ]; then
    ngx_size=8
    echo " $ngx_size bytes"
fi

32位目标平台是4,64位的话是8

3,解决完上面两处报错后,继续执行configure命令。

在这里插入图片描述

三,make前的需要修改的地方

找到objs/底下的Makefile文件,打开后找到如下两处地方,修改成跟如下一样即可开始执行make
在这里插入图片描述
然后会遇到openssl编译出错
在这里插入图片描述
解决方法:
去到openssl-1.1.1f源码目录下找到Makefile并打开,搜索m64,有两处,都删除掉,其中有一行整行删除,注意:然后直接在openssl-1.1.1f源码目录下执行make和make install,都成功后回到nginx源码目录继续执行之前未执行完的make。

又会遇到如下的问题:
在这里插入图片描述

解决方法:
找到objs/目录底下的ngx_auto_config.h文件并打开,到文件末尾增加如下代码后继续执行make

#ifndef NGX_SYS_NERR
#define NGX_SYS_NERR  132
#endif

#ifndef NGX_HAVE_SYSVSHM
#define NGX_HAVE_SYSVSHM 1
#endif

如图
在这里插入图片描述
即成功了
再make install
会生成如下文件:
在这里插入图片描述
然后板把这个文件夹打包放到板子里面
我是用的rtmp所以需要配置rtmp,修改nginx.conf文件修改成如下:
在这里插入图片描述
重新启动nginx,如果板子里面又有ffmpge的环境可以ffmpge推流试试 或者在浏览器里面输入ip

在这里插入图片描述

ffmpeg -rtsp_transport tcp -i rtsp://admin:admin123@192.1
68.3.13:554/h265/ch1/main/av_stream -vcodec copy -acodec copy -f flv rtmp://192.
168.3.127:1935/rtmplive/home

在这里插入图片描述

上面的ip修改成了你自己的摄像头ip和推流地址,然后用拉流工具查看

四,注意

  1. 需要注意的是有些工具它不支持rtmp H265的码流像官方的vlc我之前推过很多次每次都提示未知的编码格式。我会把支持的H265的rtmp vlc工具放到文章最后

  2. 还有一点需要注意的是你放到板子里面运行nginx程序会报错提示跟你ubuntu编译configure prefix=路径一致文件夹路径,你可以创建这个路径,或者在编译的时候设置一个和板子里面一样的文件路径,把编译好的nginx文件放到相同路径下即可。

  3. 还有一点如果你是用ffmpeg推流的 ffmpge必须得支持H265 如果不支持你的重新编译ffmpeg修改ffmpeg的源码
    具体修改地方是这里
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/b00515e471474f0397f6d01c064ee04e.png
    自己可以搜索看看有很多照着修改就行

支持拉H265的rtmp的VLC播放工具

https://download.csdn.net/download/kingzhou_/88075282

参考文章:
https://blog.csdn.net/qq_22633333/article/details/128942787
https://blog.csdn.net/whahu1989/article/details/101567517

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/778192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python】使用difflib对比json差异

之前自己使用python写了方法进行对比json数据,这次使用difflib模块实现: 一个json数据存在text1.txt: 另一个json数据存在text2.txt: 1、导入difflib模块 import difflib 2、调用difflib中的HtmlDiff类,使用make_fi…

ShardingSphere分库分表实战之广播表

🚀 ShardingSphere 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜&…

多个springmvc项目共用同一个redis导致session冲突的问题 的解决方案

由于redis来做session的统一管理插件,如果多个项目使用同一个redis来管理session的话,那么session很有可能会出现冲突。 下图:默认session在redis中的key值是spring:session:sessions:sessionId,如果多个项目中出现了相同的sessi…

网络安全(黑客)自学的一些建议

1.选择方向 首先是选择方向的问题,网络安全是一个很宽泛的专业,包含的方向特别多。比如 web安全,系统安全,无线安全 ,二进制安全,运维安全,渗透测试,软件安全,IOT安全&a…

docker-compose搭建RocketMq集群

集群架构:双主 机器:172.50.2.41 172.50.2.42 一、创建目录 mkdir -p /docker/alibaba/rocketmq/logs/nameserver mkdir -p /docker/alibaba/rocketmq/logs/broker mkdir -p /docker/alibaba/rocketmq/store/broker mkdir -p /docker/alibaba/rocket…

通过Appium和Accessibility Inspector获取iOS应用元素定位的方法

在 iOS 移动应用程序上使用选择器查找元素定位是我们在移动端 UI 自动化测试的先决条件。 但是,由于应用程序内容在原生 iOS 应用程序中的呈现方式,我们可以用来定位应用程序元素的选择器与 Web 浏览器元素有很大不同。 在本文中,我们将了解 …

Spring Boot 日志文件有什么用

目录 一、自定义打印日志 1.1 日志框架说明 1.2 实现自定义打印日志 1.3 日志的格式说明 2.1 日志的级别 2.2 设置日志级别的作用: 2.3 如何设置日志的级别 二、 日志的持久化 3.1 设置日志保存路径 (在 .yml 配置文件中设置日志保存路径&…

一、二维前缀和算法

文章目录 前缀和模板724. 寻找数组的中心下标238. 除自身以外数组的乘积560. 和为 K 的子数组974. 和可被 K 整除的子数组525. 连续数组1314. 矩阵区域和 前缀和模板 一维前缀和: import java.util.*;public class Main {public static void main(String[] args) …

docker-compose启动minio

一、创建文件夹 mkdir -p /docker/stand-alone-minio/data mkdir -p /docker/stand-alone-minio/configchmod 777 -R /docker/stand-alone-minio/data chmod 777 -R /docker/stand-alone-minio/config 二、docker-compose.yml version: 3.9services:minio:image: minio/mini…

【Vue3基础】计算属性

一、需求 二、代码 1、创建项目 创建项目: 1、 npm init vuelatest 2、一路回车 3、输入项目名,不要大写,如vue3bilibili 4、 cd vue3bilibili 5、 npm install 6、npm run dev启动,可以获取网址 2、App.vue文件中:…

UNIX网络编程卷一 学习笔记 第二十五章 信号驱动式IO

信号驱动式IO指进程预先告知内核,当某个描述符上发生某事时,内核使用信号通知相关进程,它在历史上曾被称为异步IO,但信号驱动式IO不是真正的异步IO,真正的异步IO通常定义为进程执行IO系统调用告知内核启动某个IO操作&a…

Kafka-partition和消费者的关系

Kafka-partition 目录概述需求: 设计思路实现思路分析1.Kafka-partition2.消费者数量小于分区数量3. 拓展实现 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a…

五笔打字练习经验总结

背景 我之前对键盘不太熟悉,打字的速度我测了一下大概是在30/m的样子,于是想提高自己的打字速度,就练习了下,现在大概到了60/m。由于自己打字拼音打字错误率较高,因为手指键位练习不到位,已经很难纠正了。所…

LeetCode[148]排序链表

难度:Medium 题目: 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4]示例 2: 输入:head [-1,5,3,4,0] 输出&…

IOR的安装及使用

简介 IOR 是一种并行 IO 基准测试,可用于测试使用各种接口和访问模式的并行存储系统的性能。IOR存储库还包括mdtest基准测试,专门测试不同目录结构下存储系统的峰值元数据速率。两个基准测试都使用通用并行 I/O 抽象后端,并依赖 MPI 进行同步…

Vue复选框、下拉框使用案例,复选框选项元素(el-checkbox)换行竖向显示

一、复选框 1、<el-checkbox-group></el-checkbox-group>的选项元素默认是行横向显示 <el-checkbox-groupv-model"additionalPermissionsParams.permissionList"change"permissionChange($event)"><el-checkbox label"10"…

c++学习(红黑树)[20]

概念 红黑树&#xff08;Red-Black Tree&#xff09;是一种自平衡的二叉搜索树&#xff0c;它在插入和删除节点时通过一系列的旋转和重新着色操作来保持树的平衡。红黑树的平衡性质使得它在插入、删除和查找等操作上具有较好的性能。 红黑树具有以下特点&#xff1a; 每个节…

【项目开发】商城 - 三级分类 - 简单笔记

目录标题 后端业务类实体类 前端最终实现效果排序变化批量删除 后端 业务类 // 省略其他简单的CRUDOverridepublic List<CategoryEntity> listWithTree() {// 1、查出所有分类List<CategoryEntity> list baseMapper.selectList(null);// 2. 找出所有的一级分类Li…

NOAA官网下载的气象雷达原始数据转化为NC文件详细步骤

一、准备工作 1.先在NOAA官网下载好气象雷达原始数据 NOAA官网下载气象雷达资料详细步骤_珞瑜的博客-CSDN博客 下载好的雷达数据有两种类型Level-2和Level-3。 如上图所示,为气象雷达数据的Level-2产品,站点名字:K