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

本文主要是介绍【网络通信】Windows搭建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 modelocation / {#include    /nginx/conf/mysite.rules; # see also http block naxsi include lineroot   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为Trueif 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服务器在实时音视频流传输领域具有重要地位,为流媒体服务提供了稳定、高效的解决方案。

这篇关于【网络通信】Windows搭建RTMP视频流服务器(含推流/拉流详细教程)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/955554

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

arduino ide安装详细步骤

​ 大家好,我是程序员小羊! 前言: Arduino IDE 是一个专为编程 Arduino 微控制器设计的集成开发环境,使用起来非常方便。下面将介绍如何在不同平台上安装 Arduino IDE 的详细步骤,包括 Windows、Mac 和 Linux 系统。 一、在 Windows 上安装 Arduino IDE 1. 下载 Arduino IDE 打开 Arduino 官网