编译Nginx OpenSSL zlib pcre集成 Nginx 推流rtmp,一条龙

    技术2026-04-06  7

    Nginx推流rtmp

    一 背景二 集成初始环境1.OpenSSL下载解压编译 2.nginx-rmtp-moudle下载解压 3.Nginx下载解压集成 配置nginx测试nginx1.启动`./nginx` sudo 各位懂2.这里我将在我的`主机`上 mac 使用`ffmpeg` 推流先测试一下 `下篇文章我将使用rtmpdump` 进行推流3.停止`./nginx -s stop` 总结:4.编译 pcre 和 zlibzlibpcre

    一 背景

    已经在个人服务器ubuntu上面集成了Nginx推流,这里在别的linux上演示一下如何集成。 比较小白一点 ,会的大家不用拍砖

    二 集成

    集成Nginx 需要配置OpenSSL,还有设置Nginx-rtmp-module,如果没有zlib,和pcre,编译nginx会编译不通过,下面都会给大家演示清楚

    初始环境

    大家如果要用阿里云啊什么的带公网ip的服务器,刚开始可能没有gcc g++ openssl 需要g++ nginx 需要gcc apt update apt install gcc apt install g++

    执行上面三条就可以了,因为后面./configure的时候会报gcc 什么的not found 的,我这里的linux 已经有这两个环境了,所以 编译不通过的日志也没法看,你们先装吧 确保后面顺利。

    1.OpenSSL

    链接,这里我选的是 release-1.19.0 https://github.com/openssl/openssl/releases?after=OpenSSL_1_1_1 右键复制tar.gz的下载链接,毕竟linux自带tar

    下载

    wget https://github.com/openssl/openssl/archive/OpenSSL_1_1_1-pre9.tar.gz

    没有wget 那就apt update 然后 apt install wget

    解压

    tar -xzvf OpenSSL_1_1_1-pre9.tar.gz

    编译

    这里看到 有 configure,也有config,我们使用config 配置编译就可以 1.首先,就在当前目录的libs 下面生成就可以

    ./config --prefix=`pwd`/libs

    我们看到了 create 了 makefile 那就可以make了

    2.make 或者 make -j4 都可以,后者快一点,4是核数量的2倍 3.make install

    libs/ 下面已经有东西了,编译openssl 成功了

    2.nginx-rmtp-moudle

    链接,这里我选的是 v1.2.1 最新的 https://github.com/arut/nginx-rtmp-module/releases/

    下载

    wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.1.tar.gz

    注意下载的目录

    解压

    tar -xzvf v1.2.1.tar.gz

    解压就可以了

    3.Nginx

    链接,这里选择release-1.19.0 https://github.com/nginx/nginx/releases

    下载

    wget https://github.com/nginx/nginx/archive/release-1.19.0.tar.gz

    解压

    tar -xzvf release-1.19.0.tar.gz

    集成

    进入nginx-release-1.19.0 configure在这里 我们返回上一级,因为方便点 嘿嘿嘿 我们这里记录一下目录,一个是 openssl 的目录,还有 nginx-rtmp-module的目录 两个箭头所指 一个openssl 的目录 一个是n…module的目录, 看起来是没有问题的。 1.执行:

    ./auto/configure --add-module=/home/zp/Desktop/nginx/nginx-rtmp-module-1.2.1 --with-openssl=/home/zp/Desktop/nginx/openssl-OpenSSL_1_1_1-pre9

    –add-module=这里是nginx-rtmp-module的目录 –with-openssl=这里是openssl的目录

    这里是成功的结果 这里要说一下箭头所指 的地方如果没有自带pcre 和 zlib会提示 pcre not found,然后如果有了pcre 再执行也是会提示 zlib not found 他的日志只一个一个出🤦‍♂️4.编译 pcre 和 zlib 如果和上面结果一样 那就继续

    2.执行make 👇下面图这里可能会报错 如果报错了的同学重新执行configure 在后面在加--with-cc-opt="-Wimplicit-fallthrough=0" 就可以了

    ./auto/configure --add-module=/home/zp/Desktop/nginx/nginx-rtmp-module-1.2.1 --with-openssl=/home/zp/Desktop/nginx/openssl-OpenSSL_1_1_1-pre9 --with-cc-opt="-Wimplicit-fallthrough=0" 然后 make clean然后make就可以了,是我偷的图。。但是他的解决方法和我不太一样,所以就不加他的链接了

    3.执行make install 可以用whoami查看输出是root的话,否者就sudo make install大家都懂哈,因为他要生成在/usr/local/目录下 到这里就编译成功了

    配置nginx

    这是他的配置信息 这里我也懒得配 我们可以从nginx-rtmp-module目录/test/下面有个nginx.conf 替换这里就行了

    先备份一下 目录有双引号没双引号都一样,因为我是从文件管理拖过去的所以有,各位随便哈

    文件内容长这样,不想复制文件,自己复制内容写文件也可以,各位随便

    worker_processes 1; error_log logs/error.log debug; events { worker_connections 1024; } rtmp { server { listen 1935; application myapp { live on; #record keyframes; #record_path /tmp; #record_max_size 128K; #record_interval 30s; #record_suffix .this.is.flv; #on_publish http://localhost:8080/publish; #on_play http://localhost:8080/play; #on_record_done http://localhost:8080/record_done; } } } http { server { listen 8080; location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root /path/to/nginx-rtmp-module/; } location /control { rtmp_control all; } #location /publish { # return 201; #} #location /play { # return 202; #} #location /record_done { # return 203; #} location /rtmp-publisher { root /path/to/nginx-rtmp-module/test; } location / { root /path/to/nginx-rtmp-module/test/www; } } }

    记住这个myapp

    测试nginx

    1.启动./nginx sudo 各位懂

    2.这里我将在我的主机上 mac 使用ffmpeg 推流先测试一下 下篇文章我将使用rtmpdump 进行推流

    没有ffmpeg 的话自己装一个去

    ffmpeg -re -i gwyg18s.mp4 -vcodec libx264 -acodec aac -f flv rtmp://172.16.99.130/myapp/mystream

    -i 后面是你的mp4 推流的视频编码是x264的,音频的是aac rtmp://172.16.99.130/myapp/mystream ip就这个各位懂,还有myapp看见没有 给你们看下我的视频

    看到这里不停的动,那说明基本是成功了,咱们打开vlc查看这个 没有这个的话,自己下一个。必备

    打开google 浏览器,链接输入如下,就会提示你用vlc 打开,那你就打开 rtmp://172.16.99.130/myapp/mystream

    如果不行的话,你就File->Open Network 输入也行

    看见没有,有了,这里我是用虚拟机装的nginx 用的同一个网,然后卡顿的很,建议大家租个服务器用,毕竟推流然后在网络视频查看, 感觉绕地球一圈。大家都懂。

    3.停止./nginx -s stop

    然后你再试试推流就会发现 大功高潮


    总结:

    1.集成nginx,需要openssl,和nginx-rtmp-module 2.nginx-rtmp-module,只是配置文件不需要编译 3.nginx 也必须要有zlib 和pcre library

    4.编译 pcre 和 zlib

    这里需要就看不需要就不用看

    zlib

    链接http://www.zlib.net/ wget http://www.zlib.net/zlib-1.2.11.tar.gz

    tar -xzvf zlib-1.2.11.tar.gz

    cd zlib-1.2.11/ ./configure make make install

    pcre

    wget https://netix.dl.sourceforge.net/project/pcre/pcre/8.40/pcre-8.40.tar.gz tar -xzvf pcre-8.40.tar.gz cd pcre-8.40/ ./configure make make install

    Processed: 0.018, SQL: 9