如何在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模块推送出去

开始吧

一,准备工作

如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流_第1张图片
先准备上面的这些资源文件,还有就是安装好你的交叉编译工具(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码流_第2张图片
解决办法:找到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码流_第3张图片

解决方法:找到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码流_第4张图片

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

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

又会遇到如下的问题:
如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流_第7张图片

解决方法:
找到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
会生成如下文件:
如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流_第8张图片
然后板把这个文件夹打包放到板子里面
我是用的rtmp所以需要配置rtmp,修改nginx.conf文件修改成如下:
如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流_第9张图片
重新启动nginx,如果板子里面又有ffmpge的环境可以ffmpge推流试试 或者在浏览器里面输入ip

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

ffmpeg -rtsp_transport tcp -i rtsp://admin:[email protected]
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码流_第11张图片

上面的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码流_第12张图片
    自己可以搜索看看有很多照着修改就行

支持拉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

你可能感兴趣的:(嵌入式,FFmepeg音视频开发笔记,nginx,服务器)