首页 > 系统相关 >FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流

FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流

时间:2024-07-21 11:29:40浏览次数:17  
标签:FFmpeg nginx module Nginx 源码 rtmp 服务器

《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2.2  FFmpeg向网络推流”介绍了轻量级流媒体服务器MediaMTX,虽然MediaMTX使用很简单,可是不能满足复杂的业务需求,故而实际应用中需要引入专业的流媒体服务器。
nginx-rtmp是开源WEB服务器Nginx可增强的第三方rtmp模块,该模块封装了rtmp服务器,可以提供简单的rtmp流媒体服务器功能。由于Nginx本身是个高性能的WEB服务器,支持代理分发多种协议的数据,因此通过Nginx集成RTMP服务器也是个可行的方案。Nginx默认没开启rtmp模块,需要在编译nginx时添加rtmp模块,还要修改配置文件才能开启rtmp服务。
因为nginx+rtmp在Windows环境的编译过程非常麻烦,不但要考虑各种依赖包的版本兼容问题,还要注意MSYS与Visual Studio命令行的切换问题,所以这里只讲述如何在Linux环境给Ngixn集成rtmp模块,详细的集成步骤说明如下。

一、准备Nginx和nginx-rtmp-module的源码

Nginx的官网地址是https://nginx.org/,下载页面为https://nginx.org/en/download.html,最新版本为2024年4月发布的nginx-1.26.0,该版本的源码包下载链接为https://nginx.org/download/nginx-1.26.0.tar.gz。
nginx-rtmp-module的源码托管地址是https://github.com/arut/nginx-rtmp-module,各版本的下载页面为https://github.com/arut/nginx-rtmp-module/tags,最新版本为2024年4月发布的nginx-rtmp-module-1.2.2,该版本的源码包下载链接为https://github.com/arut/nginx-rtmp-module/archive/refs/tags/v1.2.2.tar.gz。
以上源码包下载完毕后,把它们上传到Linux服务器的/usr/local/src目录下,后续将在该目录解压这些源码包。

二、编译与安装Nginx(包含集成rtmp模块)

登录Linux服务器,依次执行下列的解压命令,分别解压nginx-rtmp-module、nginx等等的源码包。

cd /usr/local/src
tar zxvf nginx-rtmp-module-1.2.2.tar.gz
tar zxvf nginx-1.26.0.tar.gz

接着进入nginx源码目录,执行以下命令配置nginx。

cd nginx-1.26.0
./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=../nginx-rtmp-module-1.2.2

配置完毕,执行以下命令编译nginx。

make -j4

编译完毕,执行以下命令安装nginx。

make install

三、启动Nginx的RTMP服务

打开nginx安装路径下的conf/nginx.conf,在文件末尾添加下面的rtmp配置,指定rtmp协议监听的端口号和服务名。

rtmp {
    server {
        # rtmp协议的端口号
        listen 1935;
        # rtmp协议的服务名
        application live {
            live on;
        }
    }
}

添加完毕,保存nginx.conf并退出。然后运行下面命令启动nginx。

cd /usr/local/nginx/sbin
./nginx

四、检查nginx-rtmp是否正常运行

下面通过ffmpeg把视频文件向rtmp服务推流,也就是通过下面命令向rtmp://127.0.0.1/live/test推流视频文件。有关ffmpeg的详细用法参见《FFmpeg开发实战:从零基础到短视频上线》一书,这里不再赘述。

ffmpeg -re -stream_loop -1 -i "/usr/local/src/test/2018s.mp4" -vcodec h264 -f flv rtmp://127.0.0.1/live/test

然后启动电脑上的流媒体播放器VLC media player,打开网络串流“rtmp://xxx.xxx.xxx/live/test”,可见VLC media player正常播放来自rtmp链接的直播视频,说明nginx-rtmp服务正确实现了rtmp协议的流媒体传输功能。

更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

标签:FFmpeg,nginx,module,Nginx,源码,rtmp,服务器
From: https://www.cnblogs.com/aqi00/p/18288637

相关文章

  • nginx日志切割定时任务
    目录nginx进行日志切割的好处:实现步骤:1.给access.log日志文件重命名,并备份2.编写定时日志脚本     3.运行日志切割脚本4.将日志切割脚本加入crontab定时任务crontab定时任务配置讲解nginx进行日志切割的好处:便于管理和查询:随着时间的推移,Nginx日志文......
  • nginx 部署vue http、https
    nignx配置文件server{listen80;server_nameyour_domain.com;return301https://$server_name$request_uri;}server{listen443ssl;server_nameyour_domain.com;ssl_certificate/path/to/your/ssl/certificate;ssl_certificate_k......
  • Nginx系列-3 servername优先级和location优先级和常用正则表达式
    1.正则表达式和分组由于Nginx配置文件中经常出现正则表达式,因此本章节专门对常见的正则表达式进行简单介绍。[1]开始与结束^表示匹配输入字符串的开始$表示匹配输入字符串的结束[2]匹配次数?表示匹配0次或者1次+表示匹配1次或多次*表示匹配0从或多次{n}匹配n......
  • FFmpeg基础
    文章目录播放器框架常见音视频概念编解码器FFmpeg的整体结构FFmpeg常用函数简介注册相关封装格式相关解码器相关FFmpeg常用结构体简介ffmpeg内存模型播放器框架tips:音频和视频用的处理的是一套通用的框架AVFormatContext是解复用后音视频流的句柄(类似于文件描述......
  • NGINX的日常使用之负载均衡
    负载均衡在nginx中的使用文章目录目录负载均衡在nginx中的使用前言一、负载均衡是什么?二、负载均衡的类型和应用1.硬件负载均衡器:2.软件负载均衡器三、负载均衡的好处四、负载均衡在nginx中的使用1、基本的nginx负载均衡配置示例2、Nginx负载均衡的关键特性(1)N......
  • FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg
    ​《FFmpeg开发实战:从零基础到短视频上线》一书的“第11章 FFmpeg的桌面开发”介绍了如何在Windows环境对Qt结合FFmpeg实现桌面程序,那么Windows系统通过VisualStudio开发桌面程序也是很常见的,下面就介绍如何在VisualStudio的C++工程中集成FFmpeg库和SDL2库。首先按照《FFmpe......
  • Nginx(详解以及如何使用)
    目录1.什么是Nginx?2.为什么使用nginx?3.安装nginx3.1 安装nginx的依赖插件3.2下载nginx 3.3 创建一个目录作为nginx的安装路径 3.4 解压 3.5 进入解压后的目录3.6 指定nginx的安装路径 3.7 编译和安装nginx3.8启动nginx 3.9 访问nginx 4. ngin......
  • nginx学习记录
    目录监听端口nginx缓冲和缓存缓冲优点与作用缓存优点与作用nginx负载均衡权重健康检查监听端口假设代码中,我监听8003端口,意味着我可以通过访问8003端口来获得数据将所有请求进行转发,即访问8003端口,nginx会将“访问8003端口”这一请求,转发到设定的地址这就实现了,访问的是8003......
  • nginx出现499错误码的原因以及proxy_ignore_client_abort配置 及 nginx日志配置变量大
    一、nginx出现499错误码的原因以及proxy_ignore_client_abort配置1. nginx出现499错误码的原因    最近发现服务器上出现很多499的错误,出现499错误的原因是客户端关闭了连接,在我这篇文章:服务端在执行时中途关闭浏览器退出之后php还会继续执行吗?个人实践实验得到结果( h......
  • 用Nginx反向代理之后,swagger出现no response from server错误的解决办法
    问题描述:本地运行项目打开swaager可以用,但是上传到服务器用nginx做反向代理的时候返回"error":"noresponsefromserver",且网址有端口,swaager的请求url端口丢失,使用了默认80端口  问题原因:因为在配置nginx反向代理的时候,没注意到配置代理的端口,导致端口丢失!解决方案:使......