首页 > 系统相关 >【网络通信】Windows搭建RTMP视频流服务器(含推流/拉流详细教程)

【网络通信】Windows搭建RTMP视频流服务器(含推流/拉流详细教程)

时间:2024-05-02 15:55:33浏览次数:15  
标签:Nginx Windows 视频流 nginx live RTMP 服务器 rtmp

        RTMP(Real-Time Messaging Protocol)是一种用于实时流媒体传输的网络协议,主要用于传输音频、视频和数据。RTMP最初是由Adobe Systems公司开发的,用于其Flash平台和Adobe Media Server,但随着技术的发展和开源社区的推动,RTMP已经成为了一个广泛使用的流媒体传输协议。今天和大家分享一下Windows搭建RTMP视频流服务器(含推流/拉流详细教程)

原创作者:RS迷途小书童

博客地址:https://blog.csdn.net/m0_56729804?type=blog

1、Web服务器下载(Nginx)

1.1 Nginx介绍

        Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP/RTMP等服务。它是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的。Nginx以类BSD许可证的形式发布其源代码,并因其稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。

        在功能方面,Nginx可以支持高达50,000个并发连接数的响应,并且可以作为负载均衡服务,既可以在内部直接支持Rails和PHP程序对外进行服务,也可以支持作为HTTP代理服务对外进行服务。此外,Nginx还提供了模块化的结构,包括gzipping、byte ranges、chunked responses以及SSI-filter等filter。

        在安装和配置方面,Nginx的安装相对简单,可以通过各种包管理器如apt、yum等进行安装。配置文件通常位于/etc/nginx/nginx.conf,可以使用任何文本编辑器进行配置。在配置文件中,可以修改监听端口、添加虚拟主机配置等。

1.2 Nginx下载安装

        下载地址:Index of /download/ (ecsds.eu)

        使用说明:nginx for Windows - documentation.pdf (ecsds.eu)

        这个版本是带rtmp且编译过的nginx版本,下载也很快,所以就不分享网盘了,大家自行下载!

2、RTMP服务器下载

2.1 nginx-rtmp-module下载

        nginx-rtmp-module是一个用于Nginx的第三方模块,它使Nginx能够支持实时多媒体流的传输和处理。

        下载地址:GitHub - arut/nginx-rtmp-module: NGINX-based Media Streaming Server

        网盘地址:【RS迷途小书童分享】

3、搭建步骤

3.1 文件预处理

  1. 解压下载的nginx文件nginx 1.7.11.3 Gryphon.zip,并重命名文件夹为nginx_1.7.11.3。
  2. 解压下载的rtmp服务器源码nginx-rtmp-module-master.zip,重命名文件夹为nginx-rtmp-module。
  3. 将nginx-rtmp-module文件夹移动到第1步的nginx_1.7.11.3目录下

3.2 配置文件修改

        将nginx_1.7.11.3文件夹下的conf目录中nginx-win.conf文件以记事本的形式打开,将下面的代码替换进去。

worker_processes  2;
events {
    worker_connections  8192;
    # max value 32768, nginx recycling connections+registry optimization = 
    #   this.value * 20 = max concurrent connections currently tested with one worker
    #   C1000K should be possible depending there is enough ram/cpu power
    # multi_accept on;
}
#RTMP服务
rtmp {
    server {
        listen 1935;#监听端口,若被占用,可以更改
        chunk_size 4000;#上传flv文件块儿的大小
        application live { #创建名为"live"的应用
             live on;#开启live的应用
             allow publish 127.0.0.1;#
             allow play all;
        }
    }
}
#HTTP服务,可以通过浏览器访问http://localhost/stat查看状态
http {
    #include      /nginx/conf/naxsi_core.rules;
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        off;
    #tcp_nopush     on;
    server_names_hash_bucket_size 128;
    client_body_timeout   10;
    client_header_timeout 10;
    keepalive_timeout     30;
    send_timeout          10;
    keepalive_requests    10;
    server {
        listen       80;
        server_name  localhost;

# For Naxsi remove the single # line for learn mode, or the ## lines for full WAF mode
        location / {
            #include    /nginx/conf/mysite.rules; # see also http block naxsi include line
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

3.3 启动RTMP服务

        按住win+R,输入cmd进入命令行,跳转至nginx_1.7.11.3目录,输入nginx.exe -c conf\nginx-win.conf即可。

3.4 RTMP服务常用命令

nginx.exe -s stop    //快速停止服务器,可能不保存相关信息
nginx.exe -s quit    //完全停止服务器,保存相关信息
nginx.exe -s reload  //重新载入Nginx/配置信息修改时使用此命令

4、OBS推流

4.1 OBS下载

        Open Broadcaster Software是一个免费的开源的视频录制和视频实时交流软件。其有多种功能并广泛使用在视频采集,直播等领域。

官网下载:Open Broadcaster Software | OBS (obsproject.com)

网盘地址:【RS迷途小书童分享】

4.2 简易推流

        我这里就不详细介绍OBS如何使用了,大家可以自己探索一下,一切默认也可以用。

        推流码相当于密码一样,拉流的时候要用到,随便设置。我这里192.168.31.8是本机地址,前面的rtmp和后面的live就当作默认模板就行了,只需要改本机地址。如果不知道本机地址的,就去cmd命令行中输入ipconfig就能看到了。

        以上的设置好后,点击开始直播即可,下面会显示当前的fps、码率等。

5、Python拉流

        我这里使用opencv库做一个简单的拉流演示,当然也可以使用VLC等专门查看RTMP流的软件,看个人如何选择。

# -*- coding: utf-8 -*-
"""
@Time : 2023/11/19 13:59
@Auth : RS迷途小书童
@File :1.py
@IDE :PyCharm
@Purpose:Python拉取RTMP视频流
@Web:博客地址:https://blog.csdn.net/m0_56729804
"""
import cv2

# 假设你的RTMP流地址是'rtmp://example.com/live/1122'
# 请将其替换为你自己的RTMP流地址,这里的1122就是我刚才设置的推流码
rtmp_stream_url = 'rtmp://192.168.31.8/live/1122'

# 使用OpenCV的VideoCapture类来打开视频源
cap = cv2.VideoCapture(rtmp_stream_url)

# 检查是否成功打开视频流
if not cap.isOpened():
    print("Error opening video stream")
    exit()
# 循环读取视频的每一帧
while True:
    # 读取一帧图像
    ret, frame = cap.read()
    # 如果读取成功,ret为True
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break
        # 显示读取到的帧
    cv2.imshow('RTMP Stream', frame)
    # 等待1毫秒,然后检查是否按下'q'键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
    # 释放VideoCapture对象
cap.release()
# 关闭所有OpenCV窗口
cv2.destroyAllWindows()

下图为OBS推送的文件管理窗口界面。

6、总结

        RTMP服务器的主要功能包括接收来自客户端的音视频流,并将其转发给其他客户端进行播放或处理。这使得RTMP在直播、点播等流媒体服务中得到了广泛应用。RTMP协议提供了稳定的连接和较低的延迟,使其成为实时互动场景的理想选择,如直播、在线游戏等。

        RTMP服务器在处理高负载的流媒体服务时表现出色,能够处理大量的并发连接和传输数据。此外,RTMP协议还支持多种音频和视频编解码器,以适应不同的流媒体应用需求。

        然而,随着HTML5的推广和Flash的逐渐淘汰,RTMP协议在某些方面受到了挑战。尽管如此,RTMP仍然在许多场景中,尤其是实时互动场景,保持着广泛的应用。例如,直播平台通常会采用RTMP协议作为推流和拉流的技术基础,以确保用户可以实时观看到直播内容。

        总之,RTMP服务器在实时音视频流传输领域具有重要地位,为流媒体服务提供了稳定、高效的解决方案。

标签:Nginx,Windows,视频流,nginx,live,RTMP,服务器,rtmp
From: https://www.cnblogs.com/RSran/p/18170267

相关文章

  • 对于Windows防火墙的入站连接(I)设置,有三个选项:阻止、阻止所有连接和允许。下面是它们之
    使用组策略配置防火墙规则-WindowsSecurity|MicrosoftLearn对于Windows防火墙的入站连接(I)设置,有三个选项:阻止、阻止所有连接和允许。下面是它们之间的区别和影响:阻止:区别:阻止选项表示只有特定的入站连接被允许,其他所有入站连接都将被阻止。这意味着需要手动配置允许的......
  • PowerShell 开启 Windows 防火墙并设置阻止程序接收入站连接时向用户显示通知,可以执行
    PowerShell开启Windows防火墙并设置阻止程序接收入站连接时向用户显示通知,可以执行以下命令:powershellCopyCodeSet-NetFirewallProfile-ProfileDomain,Public,Private-DefaultInboundActionBlock-NotifyOnDefaultInboundAction$true这条命令将设置防火墙配置文件......
  • Windows上使用PowerShell来启用记录被丢弃的数据包(D)和成功的连接(U)的日志,你可以通过配
    Windows上使用PowerShell来启用记录被丢弃的数据包(D)和成功的连接(U)的日志,你可以通过配置Windows高级防火墙规则来实现。具体步骤如下:创建防火墙规则:首先,你需要创建适当的防火墙规则来捕获被丢弃的数据包(D)和成功的连接(U)。这可以通过PowerShell来完成。下面是一个示例,假......
  • 在Windows防火墙设置中,允许单播响应(Unicast Response)是一个控制选项,用于允许或禁止系
    在Windows防火墙设置中,允许单播响应(UnicastResponse)是一个控制选项,用于允许或禁止系统对多播或广播网络流量的单播响应。让我详细解释一下允许和禁止单播响应的区别:允许单播响应(是):当设置为“是”时(默认值),Windows系统会允许对多播或广播网络流量的单播响应。这意味着当系......
  • 怎么在windows上用vcpkg方法安装libcurl
    1、到网站上找libcurl的下载页面   https://curl.se/download.html  2、在windows64bit(或者其它下载栏目)中的“Windows64-bit8.7.1libcurlVcpkg”里点击 "8.7.1"(意味着下载libcurl的windows64位版本8.7.7下用vcpkg编译的源码);3、下面是相关说明:Build......
  • WDS+MDT网络启动自动部署windows(十二)查错的方法
    简介各种错误不断,那么怎么检查呢?MDT日志MDT终端是待安装的,而且也不知道安装临时文件是存在内存的虚拟磁盘还是真实磁盘。我不深究。那么就需要将MDT的日志回写到服务器上,才方便服务器检查错误。共享在任意服务器创建logs$共享,允许mdt写入,记得共享权限和NTFS权限。mdt,是我们......
  • Windows下从JDK1.8切换安装JDK11不生效
    Windows下安装JDK11是没问题的试了好几遍心态有点崩,试着把path的%JAVA_HOME%\bin移到最上层然后Java-version就可以了可能是配置好JDK1.8之后它会自动生成一个环境变量,此环境变量优先级较高导致在切换到JDK11后系统会先读取到JDK1.8生成环境变量而不会读取到JDK11的环......
  • ffmpeg7.0常用命令笔记 windows下
    1.多媒体格式转换ffmpeg-iinput.mov-acodeccopy-vcodeccopyout.mp4 2.从多媒体文件中抽取音频ffmpeg-iinput.mov-vn-acodeccopyout.aac 3.从多媒体文件中抽取视频ffmpeg-iinput.mov-an-vcodeccopyout.h264 4.将多媒体文件解码为原始音频数据......
  • 在 Windows 环境下,有几种开源的日志监控软件可供选择,包括:
    日志监控软件通常根据其功能可以进行以下分类:日志收集:收集各种来源的日志数据,包括服务器日志、应用程序日志、操作系统日志等。支持多种日志格式和传输方式,如文本日志、JSON格式、Syslog、WindowsEventLog等。日志过滤与解析:对收集到的日志数据进行过滤和解析......
  • 在Windows环境下,有一些开源的网络监控软件可供选择,其中一些包括:
     网络监控软件通常根据其功能可以进行以下分类:设备发现与拓扑图:自动发现网络设备和拓扑结构。绘制网络拓扑图,显示设备之间的关系和连接。性能监控与分析:实时监控网络设备和服务器的性能指标,如带宽利用率、CPU使用率、内存使用率等。收集和存储历史性能数据,以便......