Windows搭建RTMP视频流服务(Nginx服务器版)

文章目录

引言

RTSP和RTMP视频流的区别

  1. RTSP (Real-Time Streaming Protocol)实时流媒体协议。 RTSP定义流格式,流数据经由RTP传输;RTSP实时效果非常好,适合视频聊天,视频监控等方向。
  2. RTMP(Real Time Message Protocol)实时消息协议。 用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题,优势在于低延迟,稳定性高,支持所有摄像头格式,浏览器加载 flash插件就可以直接播放。
  3. RTSP是服务器端推送到客户端,而RTMP是点对点传输。
  4. RTSP是基于UDP或TCP,传输数据时具有较小的延迟,可用于实时流媒体的传输。
  5. RTMP是基于TCP,具有高可靠性,能够自动重连,即使在网络环境不稳定时也能够保证流媒体传输的质量。
  6. RTSP也支持多种编码格式,但通常只用于传输单个音视频轨道。RTMP支持多种编码格式,包括H.264和AAC等,支持多个音视频轨道。
  7. RTSP旨在建立和维护原始数据源(客户端)和流服务器之间的连接,允许控制流媒体服务器内的娱乐和通信系统,允许暂停和播放功能。RTMP支持整合文本、视频和音频,支持MP3和AAC音频流,也支持MP4、FLV和F4V视频。

推流和拉流的区别

  1. 推流:指的是将摄像头、屏幕等设备上的数据通过网络传输到服务器,并由服务器进行处理、存储或直播。比如,在进行网络直播时,主播需要将自己的摄像头数据通过网络上传到服务器,这个过程就是推流。
  2. 拉流:指的是从服务器上获取视频流并在本地播放的过程,也叫做播放。 比如,在观看网络上的直播时,用户需要从服务器上获取视频流才能进行观看,这个过程就是拉流。

FFmpeg概念

FFmpeg是将音频和视频转为流的开源计算机程序。

EasyDarwin实现RTSP视频流服务步骤

  1. 安装FFmpeg
  2. 安装EasyDarWin
  3. 启动本地摄像头
  4. 使用VLC或PotPlayer可视化播放器播放视频

1、安装FFmpeg

下载FFmpeg并配置环境 ,执行 ffmpeg -version 测试安装是否成功。

  1. FFmpeg官网
  2. 下载好的FFmpeg版本


成功配置ffmpeg版本:

2、安装Nginx服务器

  • Nginx 是一个高性能的HTTP和反向代理轻量级web服务器,同时也提供了IMAP/POP3/SMTP服务。
  • 在Nginx官网上下载的Nginx是不带RTMP模块的。所以本文需要下载Gryphton版本的Nginx服务器 ,即RTMP服务器就是基于Nginx开发的module
  • nginx 1.7.11.3 Gryphon该版本Nginx包含RTMP组件,通过RTMP组件,提供流媒体服务,让Nginx成为RTMP流媒体服务器。
  • Nginx------其他window版本下载

实现

1、下载Nginx

2、下载trmp压缩包

  • 下载nginx-rtmp-module,将nginx-rtmp-module-master.zip解压到nginx 1.7.11.3 Gryphon目录中,并重命名文件夹为nginx-rtmp-module

在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f1e7c424a9244617882f38448d7042ee.png)


3、进入nginx 1.7.11.3 Gryphon文件夹的conf目录下, 创建并编辑 nginx.conf 文件

java 复制代码
worker_processes  2;

events {
    worker_connections  8192;
}

rtmp {
    server {
        listen 1935;#监听端口,若被占用,可以更改
        chunk_size 4000;#上传flv文件块儿的大小
        application live { #创建一个叫live的应用
             live on;#开启live的应用
             allow publish 127.0.0.1;#
             allow play all;
        }
    }
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        off;
    #tcp_nopush     on;

    server_names_hash_bucket_size 128;

## Start: Timeouts ##
    client_body_timeout   10;
    client_header_timeout 10;
    keepalive_timeout     30;
    send_timeout          10;
    keepalive_requests    10;
## End: Timeouts ##

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }


}

4、启动RTMP服务器

打开CMD,进入nginx 1.7.11.3 Gryphon目录下,执行如下指令,检查nginx的配置文件是否正确。

cmd 复制代码
nginx.exe -t

启动nginx服务器

start nginx 命令的作用是载入缺省./conf/nginx.conf配置文件,启动nginx。

cmd 复制代码
start nginx

采用别的配置去开启nginx命令如下

cmd 复制代码
nginx.exe -c conf\nginx-win.conf

如何停止nginx服务器?

打开cmd,输入如下命令

cmd 复制代码
taskkill /f /im  nginx.exe

3、实现本地视频推流服务

步骤

  1. 准备一个视频放到FFmpeg文件夹下
  2. FFmpeg实现推流

实现

1、准备一个视频放到FFmpeg\bin文件夹下

2、FFmpeg实现推流

语法

cmd 复制代码
ffmpeg -re -stream_loop -1 -i 视频文件.mp4 -c copy -f flv 播放地址

播放地址根据nginx.conf文件一一对应,如本文实现推流地址为 rtmp://127.0.0.1:1935/live/test

配置好FFmpeg环境,直接打开 cmd 输入如下命令,如果没配置FFmpeg环境,需要来到FFmpeg\bin目录下。

cmd 复制代码
ffmpeg -re -stream_loop -1 -i 测试视频.mp4 -c copy -f flv rtmp://127.0.0.1:1935/live/test

要想在推流指令中使用其它推流目录,比如改为使用" mydir ",就在 nginx.conf1 修改 live ==》 mydir

可以看到这里的数值在动,就说明推流成功了

4、使用VLC或PotPlayer可视化播放器播放视频

  1. 方式一:下载PotPlayer播放器,任意一个浏览器,输入播放地址 rtmp://127.0.0.1:1935/live/test,回车,打开PotPlayer播放。
  2. 方式二:打开PotPlayer,右下角选择【添加】---【添加链接】---【填写播放地址】



3.方式三:下载 VLC播放器,选择【媒体】---【打开网络串流】---【网络】,粘贴地址,【播放】即可。

5、RTSP / RTMP系列文章

1.Windows搭建RTSP视频流服务(EasyDarWin服务器版)

相关推荐
深情废杨杨16 分钟前
服务器几核几G几M是什么意思?如何选择?
运维·服务器
康熙38bdc16 分钟前
Linux 进程优先级
linux·运维·服务器
Web极客码17 分钟前
常见的VPS或者独立服务器的控制面板推荐
运维·服务器·控制面板
只是有点小怂21 分钟前
parted是 Linux 系统中用于管理磁盘分区的命令行工具
linux·运维·服务器
N0zoM1z033 分钟前
域内用户名枚举 实验
windows
三枪一个麻辣烫43 分钟前
linux基础命令
linux·运维·服务器
cuisidong19971 小时前
如何在 Kali Linux 上安装 Google Chrome 浏览器
linux·运维·chrome
wusam2 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)
运维·服务器·网络·docker·容器
南种北李2 小时前
Linux自动化构建工具Make/Makefile
linux·运维·自动化
一直在进步的派大星2 小时前
Docker 从安装到实战
java·运维·docker·微服务·容器