Windows上搭建nginx-rtsp流媒体服务器,实现FFmpeg推流、录像转rtsp推流

发布时间 2024-01-09 13:59:41作者: 韦恩老爷
  1. 背景

  2. 实现

rtmp {
    server {
        listen 1935;

        application live {
            live on;
        }
		
        application hls {
            live on;
            hls on;  
            hls_path temp/hls;  
            hls_fragment 8s;  
        }
    }
}

这里的配置参数及其含义
listen 代表监听端口
application live 跟的是推流请求路径
live on 代表开启实时
hls on 代表开启hls
hls_path 代表rtmp推流请求路径,文件存放路径
hls_fragment 8s 代表每个TS文件包含8秒的视频内容

启动nginx.exe,在任务管理器观察到nginx.exe在后台运行即可

  • 2.2 rtsp-simple-server
    rtsp-simple-server(MediaMTX)是一个随时可用的零依赖服务器和代理,
    允许用户发布、读取和代理实时视频和音频流。
    rtsp-simple-erver github地址
    下载mediamtx_v1.3.0_windows_amd64
    根据需要修改配置文件mediamtx.yml

    我这里修改其rtmp服务端口为8556,修改后保存,启动mediamtx.exe

  • 2.3 FFmpeg
    这里我们使用FFmpeg模拟推送视频流,将mp4文件模拟成rtsp流
    FFmpeg官方下载地址

    下载后bin目录下有三个exe文件
    ffmpeg.exe:这是FFmpeg的主要工具,用于处理多媒体内容,包括音频、视频和其他类型的多媒体数据。它可以用于转码、裁剪、合并、滤镜处理等操作。
    ffplay.exe:这是FFmpeg的播放器工具,用于播放多媒体文件。它可以播放各种格式的音频和视频文件,并支持实时流传输。
    ffprobe.exe:这是FFmpeg的分析器工具,用于获取多媒体文件的元数据和信息。它可以分析音频、视频和其他类型的多媒体文件,并提供有关文件的各种信息,如编码格式、帧率、比特率等。

这里我们使用到ffmpeg.exe
首先我们将一个mp4文件放到bin目录下
然后创建一个脚本文件start.bat,脚本内容如下:

ffmpeg.exe -re -i test.mp4 -rtsp_transport tcp -vcodec h264 -b:v 1000k -f rtsp rtsp://192.168.2.233:8556/live/stream_0
pause

此命令将“test.mp4”文件转码为H.264格式,并以TCP协议通过RTSP流发送到指定的RTSP服务器地址。
脚本的参数及其含义:
ffmpeg: 这是调用FFmpeg程序的命令。
-re: 以实时速率读取输入文件,使其与摄像头的实时数据流保持同步。
-rtsp_transport tcp: 这个参数是用来指定RTSP流的传输协议为TCP。
-vcodec h264: 输出视频的编解码器为H.264。
-b:v 1000k: 比特率为1000千位每秒 (k表示千位)。比特率决定了视频的质量和文件大小。
-f rtsp: 输出格式为RTSP流。

此时目录中的文件如下

双击启动start.bat开始推流

至此,rtsp推流服务器搭建成功,让我们用vlc拉流验证一下
“媒体”->“打开网络串流”,输入前面脚本中的rtsp url,点击“播放”