• Windows本地搭建rtmp推流服务


    前言

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

    一、工具准备

    1. Nginx:使用nginx-rtmp-win64
    2. 推流工具FFmpeg:官方下载地址
    3. 拉流工具VLC:下载地址

    二、搭建说明

    1. Nginx的安装使用

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

    • 下载nginx-rtmp-win64的zip包,解压到本地文件夹中,或者通过git直接拉取到本地。
    • 修改配置文件。打开conf文件夹下的nginx.conf文件。在文件中添加rtmp配置块,可放在http配置块的上面。
    1. rtmp {
    2. server {
    3. listen 1935;
    4. application live { // live是推流路径的名字
    5. live on;
    6. }
    7. }
    8. }
    • 保存配置文件,并启动Nginx。在命令行中输入
    start nginx.exe
    • Windows下Nginx的启动、停止等命令汇总
    1. // 1.启动
    2. start nginx.exe
    3. nginx.exe // 这种会让cmd窗口一直处于执行中,不能进行其他命令操作
    4. // 2.停止
    5. nginx.exe -s stop // 快速停止nginx,可能不保存相关信息;
    6. nginx.exe -s quit // quit是完整有序的停止nginx,并保存相关信息
    7. // 3.重新载入Nginx
    8. nginx.exe -s reload
    9. // 4.重新打开日志文件
    10. nginx.exe -s reopen
    11. // 5.查看Nginx版本
    12. nginx.exe -v
    • 打开浏览器输入“127.0.0.1”查看nginx是否启动成功。能看到下面的内容即nginx已经启动成功。

    2. FFmpeg的安装使用

    • 从FFmped官网下载FFmpeg

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

    • 接下来编写一个简单的批处理脚本,使用ffmpeg做推流。
      • 首先将要推流的视频资源放到ffmpeg.exe的同级目录下,然后创建一个bat文件。

    • 使用编辑器打开批处理文件,写入如下的批处理命令
    ffmpeg -re -stream_loop -1 -i .\test.mp4 -vcodec libx264 -acodec aac -f flv  rtmp://127.0.0.1:1935/live/hls
      • -stream_loop:设置输入流的循环次数,-1表示一直循环,0表示不循环。因为我的测试视频较短,故设置一直循环。
      • -i:设置输入流
      • -vcodec:设置视频编解码器
      • -acodec:设置音频编解码器
      • "rtmp://127.0.0.1:1935/live/hls":
        • 127.0.0.1:1935:即nginx的服务器地址及端口,开始推流时要先运行nginx服务器。
        • live:是nginx中配置的推流的路径
        • hls:是自定义的推流地址,拉流时加上此地址即可。
    • 编写好后,在控制台中或者双击启动此批处理。

    3. 使用VLC做拉流测试

    • 从官网下载安装VLC

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

    • 输入我们使用nginx创建的推流服务地址
    rtmp://127.0.0.1:1935/live/hls

    • 验证推流成功

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

  • 相关阅读:
    金融行业数据库类应用分布式存储的评测方法与实践经验
    软考-网络安全体系与网络安全模型
    读书笔记:Effective C++ 2.0 版,条款28(namespace )
    AR人体姿态识别,实现无边界的人机交互
    PAM从入门到精通(十七)
    Linux中替换配置文件中的某个变量值或参数值--sed
    【无标题】
    历时2月,动态线程池 DynamicTp 发布里程碑版本 V1.0.8
    (71)MIPI DSI LLP介绍(十一)
    【Django | 开发】面试招聘信息网站(增加csv,excel导出&日志管理功能)
  • 原文地址:https://blog.csdn.net/xiaopangcame/article/details/134527368