Windows本地搭建rtmp推流服务

LiveServer3年前 (2023-05-10)教程文章

前言

开发时偶尔需要使用rtmp直播流做视频流测试,苦于网上开源的rtmp视频流都已经失效,无奈只好尝试在本地自己搭建一个rtmp的推流服务,方便测试使用

一、工具准备

  1. Nginx:使用nginx-rtmp-win64

  2. 推流工具FFmpeg:官方下载地址

  3. 拉流工具VLC:下载地址

二、搭建说明


1. Nginx的安装使用

做rtmp推流服务的nginx需要包含有rtmp模块,官方的Nignx中没有包含rtmp模块,需要自行下载rtmp模块并安装编译。上面的Nginx版本已经包含了rtmp模块,无需自己重新编译。

  1. 下载nginx-rtmp-win64的zip包,解压到本地文件夹中,或者通过git直接拉取到本地。

  2. 修改配置文件。打开conf文件夹下的nginx.conf文件。在文件中添加rtmp配置块,可放在http配置块的上面。

    rtmp {      
        server {            
            listen ;
            application live { 
                live on;
            }
        } 
    }
  3. 保存配置文件,并启动Nginx。在命令行中输入

    start nginx.exe

    Windows下Nginx的启动、停止等命令汇总

    // 1.启动 
    start nginx.exe
    nginx.exe // 这种会让cmd窗口一直处于执行中,不能进行其他命令操作
    // 2.停止
    nginx.exe -s stop // 快速停止nginx,可能不保存相关信息;
    nginx.exe -s quit // quit是完整有序的停止nginx,并保存相关信息
    // 3.重新载入Nginx
    nginx.exe -s reload
    // 4.重新打开日志文件
    nginx.exe -s reopen
    // 5.查看Nginx版本
    nginx.exe -v
  4. 打开浏览器输入“127.0.0.1”查看nginx是否启动成功。能看到下面的内容即nginx已经启动成功。

    图片

2. FFmpeg的安装使用

  1. 从FFmped官网下载FFmpeg


    图片

  2. 下载后在bin文件夹下找个三个exe文件


    图片

  3. 接下来编写一个简单的批处理脚本,使用ffmpeg做推流。

    a. 首先将要推流的视频资源放到ffmpeg.exe的同级目录下,然后创建一个bat文件。

    图片


    b. 使用编辑器打开批处理文件,写入如下的批处理命令

    ffmpeg -re -stream_loop -1 -i .\test.mp4 -vcodec libx264 -acodec aac -f flv  rtmp://127.0.0.1:1935/live/hls
    • 127.0.0.1:1935:即nginx的服务器地址及端口,开始推流时要先运行nginx服务器。

    • live:是nginx中配置的推流的路径

    • hls:是自定义的推流地址,拉流时加上此地址即可。

    • -stream_loop:设置输入流的循环次数,-1表示一直循环,0表示不循环。因为我的测试视频较短,故设置一直循环。

    • -i:设置输入流

    • -vcodec:设置视频编解码器

    • -acodec:设置音频编解码器

    • "rtmp://127.0.0.1:1935/live/hls":

  4. 编写好后,在控制台中或者双击启动此批处理。


    图片

3. 使用VLC做拉流测试

  1. 从官网下载安装VLC


    图片

  2. 安装后启动,点击媒体->打开网络串流


    图片

  3. 输入我们使用nginx创建的推流服务地址

    rtmp://127.0.0.1:1935/live/hls



    图片

  4. 验证推流成功


    图片

      由于是本地推流,拉流地址中的127.0.0.1也可以使用localhost代替.可能偶尔会出现拉流在播放但是黑屏的情况,此时可以停掉批处理的推流服务,重新推流试试。重开后拉流播放器也需要重新拉流。



相关文章

Windows Nginx+RTMP流媒体服务器搭建以及测试

Windows Nginx+RTMP流媒体服务器搭建以及测试

RTMP是Real Time Messaging Protocol(实时消息传输协议)的缩写。基于TCP,是一种用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒...

Nginx搭建Rtmp流媒体服务器,实现视频直播功能(Linux)

Nginx搭建Rtmp流媒体服务器,实现视频直播功能(Linux)

一、环境介绍操作系统:虚拟机运行的Ubuntu18.04 64位系统二、流媒体服务器介绍百度百科: 流媒体指以流方式在网络中传送音频、视频和多媒体文件的媒体形式。相对于下载后观看的网络播放形式而言,流...

RTMP 在直播场景的应用与动手实践

RTMP 在直播场景的应用与动手实践

RTMP (Real Time Messaging Protocol)简介RTMP(Real Time Messaging Protocol)是一种设计用于实时数据通信的网络协议,主要用于在 Flas...

Nginx 自建RTMP服务 对海康 大华 直播推流

Nginx 自建RTMP服务 对海康 大华 直播推流

在前面的文章中,我们讲到了利用EasyDarwin搭建直播推流。虽然提供了可视化界面,便于统一管理等优势。但是也存在很多不足。如部分摄像头推流不支持密匙,这时我们便需要自己动手搭建推流服务器了。实验环...

海康 大华 监控设备RTMP实时推流直播

海康 大华 监控设备RTMP实时推流直播

笔者最近的业务中,需要将机房的摄像头的图像在大屏或者html页面展示出来。本文以大华摄像头为例,介绍具体的做法。使用场景设备清单大华摄像头(P20A2-WT)但笔者还是推荐海康。本地同机房主机(Lin...