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

这篇具有很好参考价值的文章主要介绍了如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

开始吧

一,准备工作

如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流,嵌入式,FFmepeg音视频开发笔记,nginx,服务器
先准备上面的这些资源文件,还有就是安装好你的交叉编译工具(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

如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流,嵌入式,FFmepeg音视频开发笔记,nginx,服务器
解决办法:找到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

如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流,嵌入式,FFmepeg音视频开发笔记,nginx,服务器

解决方法:找到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命令。

如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流,嵌入式,FFmepeg音视频开发笔记,nginx,服务器

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

找到objs/底下的Makefile文件,打开后找到如下两处地方,修改成跟如下一样即可开始执行make
如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流,嵌入式,FFmepeg音视频开发笔记,nginx,服务器
然后会遇到openssl编译出错
如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流,嵌入式,FFmepeg音视频开发笔记,nginx,服务器
解决方法:
去到openssl-1.1.1f源码目录下找到Makefile并打开,搜索m64,有两处,都删除掉,其中有一行整行删除,注意:然后直接在openssl-1.1.1f源码目录下执行make和make install,都成功后回到nginx源码目录继续执行之前未执行完的make。

又会遇到如下的问题:
如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流,嵌入式,FFmepeg音视频开发笔记,nginx,服务器

解决方法:
找到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

如图
如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流,嵌入式,FFmepeg音视频开发笔记,nginx,服务器
即成功了
再make install
会生成如下文件:
如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流,嵌入式,FFmepeg音视频开发笔记,nginx,服务器
然后板把这个文件夹打包放到板子里面
我是用的rtmp所以需要配置rtmp,修改nginx.conf文件修改成如下:
如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流,嵌入式,FFmepeg音视频开发笔记,nginx,服务器
重新启动nginx,如果板子里面又有ffmpge的环境可以ffmpge推流试试 或者在浏览器里面输入ip

如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流,嵌入式,FFmepeg音视频开发笔记,nginx,服务器

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

如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流,嵌入式,FFmepeg音视频开发笔记,nginx,服务器

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

四,注意

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

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

  3. 还有一点如果你是用ffmpeg推流的 ffmpge必须得支持H265 如果不支持你的重新编译ffmpeg修改ffmpeg的源码
    具体修改地方是这里
    如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流,嵌入式,FFmepeg音视频开发笔记,nginx,服务器
    自己可以搜索看看有很多照着修改就行

支持拉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文章来源地址https://www.toymoban.com/news/detail-610669.html

到了这里,关于如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARMV8-aarch64的虚拟内存(mmutlbcache)介绍-概念扫盲

    🔥 博客主页 : 小羊失眠啦. 🎥 系列专栏 : 《C语言》 《数据结构》 《C++》 《Linux》 《Cpolar》 ❤️ 感谢大家点赞👍收藏⭐评论✍️ 思考: 1、cache的entry里都是有什么? 2、TLB的entry里都是有什么? 3、MMU操作的页表中的entry中都是有什么? L1和L3表中的entry中分别都是有什么

    2024年03月12日
    浏览(54)
  • ARMv8-AArch64 的异常处理模型详解之异常类型 Exception types

    异常(Exception)通俗点来讲,就是系统在正常运行的时候出现的非正常事件,这个非正常事件会导致系统状态更改或者其他错误,为了确保系统功能能正常运行,需要一些带有特权的软件代码(exception handler)来采取一些补救措施或者更新系统状态,这个过程被称为异常处理

    2024年01月21日
    浏览(40)
  • ARMv8-AArch64 的异常处理模型详解之异常等级、执行状态以及安全状态

    在了解AArch64异常等级模型之前,有必要先理解特权的概念。现代软件被开发成不同的模块,每个模块对系统和处理器资源有不同的访问级别。比如操作系统内核和用户应用程序的划分。操作系统内核需要高级别的权限来访问系统资源,然而应用程序应当被限制其配置系统的能

    2024年02月03日
    浏览(40)
  • ARMv8-AArch64 的异常处理模型详解之异常处理概述Handling exceptions

    在介绍异常处理之前,有必要了解一些关于异常处理状态的术语: 当处理器响应一个异常时,我们称该异常被获取了( taken )。 处理器响应异常之前的状态被称为 taken from 。 处理器响应异常之后的状态被称为 taken to 。 因此,当处理器识别到异常时,此时处理器处于 taken

    2024年02月20日
    浏览(45)
  • ARMv8-AArch64 的异常处理模型详解之异常向量表vector tables

    目录 一,AArch64 异常向量表  二,栈指针以及SP寄存器的选择 三,从异常返回   异常向量表 (vector tables) 是一组存放于普通内存( normal memory) 空间的,用于处理不同类型异常的指令(exception handler)。 当异常发生时,处理器需要跳转到对应的异常处理器(exception handler)

    2024年02月22日
    浏览(53)
  • 带wiringPi库的交叉编译 ---宿主机x86Ubuntu,目标机ARMv8 aarch64(香橙派)

    带wiringPi库的交叉编译如何进行 先交叉编译wiringPi库,编译出的库适合香橙派,这时候交叉编译可执行程序的平台和链接库的格式也是正确的 ,然后通过-I和-L来指定链接的wiringPi库的头文件和库的位置,但是现在还没有学习过,后面学了补上 此时如果把wiringPi库拿到Ubuntu上进

    2024年02月15日
    浏览(47)
  • ARMv8-AArch64 的异常处理模型详解之异常处理详解(同步异常和异步异常的分析和处理)

    在文章ARMv8-AArch64 的异常处理模型详解之异常类型 Exception types中提到过,同步异常是处理器在执行指令时产生的异常,是一种精确的,可以具体定位到是哪条指令导致异常的产生。下面笔者将介绍三个用于定位并分析同步异常产生的寄存器。 在文章ARMv8-AArch64 的异常处理模型

    2024年03月27日
    浏览(46)
  • [笔记]ARMv7/ARMv8 交叉编译器下载

    开发 Cortex-A7、Cortex-A72 或其他 ARM 架构 profile 芯片时,经常需要下载对应架构的交叉编译器,所以写这篇笔记,用于记录一下交叉编译器下载流程,免得搞忘。 编译环境:ubuntu 虚拟机 下载地址 我们可以从 ARM 官网的 Arm Developer下载交叉编译器,这个网站也包含几乎所有的 A

    2024年02月02日
    浏览(51)
  • Armv8-R AArch32 architecture概念学习

    该博客主要为个人学习,通过阅读官网手册整理而来(个人觉得阅读官网的英文文档非常有助于理解各个IP特性)。若有不对之处请参考 参考文档 ,以官网文档为准。 阅读该文章,可以先查看AArch64 Exception Model学习,再来看该文章会非常简单 该体系结构只有AArch32执行状态。

    2024年01月21日
    浏览(64)
  • 基于嵌入式linux的OpenSSL源码移植(基于arm64)

    SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。

    2024年02月11日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包