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

如何在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 ]; thenechoecho $0: error: C compiler $CC is not foundecho#exit 1 // 这行注释掉
fi

2,error: can not detect int size

在这里插入图片描述

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

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

armv6 armv7 (arm32)改成如下

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

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

if [ -x $NGX_AUTOTEST ]; thenngx_size=8echo " $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.mzph.cn/news/10138.shtml

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

相关文章

【博客682】k8s apiserver bookmarks机制以更高效检测变更

k8s apiserver bookmarks机制以更高效检测变更 list-watch背景: List-Watch 是kubernetes中server和client通信的最核心的机制, 比如说api-server监听etcd, kubelet监听api-server, scheduler监听api-server等等,其实…

Jmeter场景设置与监听

Jmeter场景设置 场景的概念: 场景是用来尽量真实模拟用户操作的工作单元,场景设计源自于用户真实操作。 场景设计: 场景设计是根据收集分析用户的实际操作而定义的Jmeter脚本的执行策略。 性能测试中涉及的基本场景有两种,即单一业务场景和混合业务场景…

链表是否有环、环长度、环起点

问题引入 如何检测一个链表是否有环,如果有,那么如何确定环的长度及起点。 引自博客:上述问题是一个经典问题,经常会在面试中被问到。我之前在杭州一家网络公司的电话面试中就很不巧的问到,当时是第一次遇到那个问题&…

RocketMQ集群4.9.2升级4.9.6版本

本文主要记录生产环境短暂停机升级RocketMQ版本的过程 一、整体思路 1.将生产环境MQ4.9.2集群同步到测试环境,并启动,确保正常运行。 2.参照4.9.2配置4.9.6集群 3.停掉4.9.2集群,启动4.9.6集群,测试确保正常运行。 4.停掉4.9.6集…

JSON格式Python,Java,PHP等封装获取淘宝商品快递费用数据API方法

淘宝是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取淘宝天猫商品详情快递费用数据,您可以通过开放平台的接口或者直接访问淘宝天猫商城的网页来获取商品详情快递费用。以下是两种常用方法的介绍&a…

leetcode132. 分割回文串 II(java)

分割回文串 II 分割回文串 II动态规划 回文字符串 分割回文串 II 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。 返回符合要求的 最少分割次数 。 示例 1: 输入:s “aab” 输出:1 解释:…

git使用教程

一 创建环境 参考 Git 安装配置 | 菜鸟教程 (runoob.com)https://www.runoob.com/git/git-install-setup.html 1.1 配置 $ git config --global user.name "runoob" $ git config --global user.email test@runoob.com 1.2 创建一个新文件夹 在新的文件夹执行(…

C++中的头文件.h 和 源文件.cpp 的关系

在VS中 C项目,我创建了一个类, 会自动创建头文件和源文件,这两个文件有什么关系? 如何快速切换?在头文件.h文件中声明的类方法, 如何快速在源文件中进行具体实现?在 Visual Studio 中创建 C 项…

多级调度在工程中的应用及思路

多级调度在工程中的应用及思路 集中式多机调度 顾名思义:集中式多机调度就是指,机器的数据是集中的,有统一的控制中心调度,类似于现实中的机场调度中心,铁路调度中心,一般机器将定位,速度&…

文件上传漏洞总结2

文件上传的大体都已经学习过了 这个假期在给他强化一下 什么是webshell webshell是web入侵的脚本攻击工具。webshell就是一个asp或php木马后门,黑客在入侵了一个网站后,常常在将这些asp或php木马后门文件放置在网站服务器的web目录中,与正常…

HTML5的应用现状与发展前景

HTML5,作为Web技术的核心,已经深深地改变了我们看待和使用Web的方式。它不仅提供了数不尽的新特性和功能,还使得Web设计和开发更加互动、更加直观。这篇文章将探讨HTML5的当前应用现状,以及它的未来发展前景。 HTML5的应用现状 H…

HDU-7323 2023“钉耙编程”杭电多校赛(3)a-b Problem

HDU-7323 2023“钉耙编程”杭电多校赛(3)a-b Problem 题目大意 小 A A A和小 B B B在玩游戏。有 n n n块石头,小 A A A和小 B B B轮流捡,小 A A A先捡。每人每次只能捡一块石头,直到所有的石头都被捡完。 每块石头都…

【linux升级ssh】 利用rpmbuild工具对ssh打包为rpm包进场安装升级

制作rpm包 rpmbuild命令用于创建软件的二进制包和源代码包。 官方文档:rpm.org - RPM Reference Manual rpmbuild 中文手册:rpmbuild 中文手册 [金步国] 使用rpmbuild将tar包打成rpm包 RPM打包使用的是rpmbuild命令,这个命令来自rpm-buil…

二、深入浅出WPF之系统学习XAML语法

二、系统学习XAML语法 2.1 Xaml的树形结构 跟Winforms一样,UI也是个平面结构,与winforms的设计思维不同,WPF使用树形逻辑来描述UI,下面是UI布局的简单代码 <StackPanel Background="LightBlue"><TextBox x:Name="textBox1" Margin="5&q…

本地缓存LoadingCache

引入依赖 <!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>32.1.1-jre</version> </dependency>主要代…

(三)InfluxDB入门(借助Web UI)

以下内容来自 尚硅谷&#xff0c;写这一系列的文章&#xff0c;主要是为了方便后续自己的查看&#xff0c;不用带着个PDF找来找去的&#xff0c;太麻烦&#xff01; 第 3 章 InfluxDB入门&#xff08;借助Web UI&#xff09; 借助Web UI&#xff0c;我们可以更好地理解InfluxD…

C语言入门篇(八)

前言   本篇分享的是部分操作符的概念与用法&#xff0c;从经典例题入手&#xff0c;带你快速了解和掌握。   收录专栏&#xff1a;浅谈C语言 操作符详解上 1. 操作符分类2. 算术操作符3. 移位操作符3.1 左移操作符3.2 右移操作符 4. 位操作符5. 赋值操作符6. 单目操作符6.…

Excel双向柱状图的绘制

Excel双向柱状图在绘制增减比较的时候经常用到&#xff0c;叫法繁多&#xff0c;双向柱状图、上下柱状图、增减柱状图都有。 这里主要介绍一下Excel的基础绘制方法和复杂一点的双向柱状图的绘制 基础双向柱状图的绘制 首先升降的数据如下&#xff1a; 月份上升下降20220359-…

如何创建高级 CSS 下拉菜单

效果展示 实现思路及部分代码 1、定义整体页面结构 从上述的效果展示图可以看出&#xff0c;页面的整体结构应该需要一个总菜单容器来装载父级菜单项&#xff0c;并且对应的父级菜单项应该有对应的菜单子项。子菜单是分类的话&#xff0c;我们还需要额外在扩展对应的容器来装…

代码随想录算法训练营day11 | 20. 有效的括号,1047. 删除字符串中的所有相邻重复项

目录 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值 20. 有效的括号 难度&#xff1a;easy 类型&#xff1a;栈与队列 思路&#xff1a; 利用栈来做括号匹配&#xff1b; 代码&#xff1a; class Solution {public boolean isValid(String…