OBS+Nginx+VLC推拉流

概述

推拉流分为推流和拉流。推流就是将client端的视频画面推送到流媒体服务器;拉流就是另外一个client端从流媒体服务器获取视频画面。

本文中,使用OBS软件作为推流客户端,使用Nginx作为流媒体服务器,使用VLC作为拉流客户端。

整个推拉流过程:

  • 流媒体服务设置推拉流url,推流和拉流使用同一个url
  • OBS获取摄像头画面,并推送到推拉流url
  • VLC串流推拉流url
  • OBS这边获取到什么画面,VLC就可以看到什么画面,大概有2-4s延迟

环境准备

本文用到了两个设备:

  • CentOS:安装Nginx,作为流媒体服务器
  • Windows11:安装有OBS和VLC,既作为推流客户端,也作为拉流客户端

安装Nginx

nginx本身不可以作为流媒体服务器使用,需要借助rtmp模块。此模块属于非默认安装的功能,需要编译安装。

可参考:https://www.cnblogs.com/Naylor/p/18070047

安装OBS

参考官网:https://obsproject.com/

安装VLC

参考官网:https://www.videolan.org

操作步骤

Nginx添加rtmp配置

前提需要先安装了 nginx-rtmp-module 模块

rtmp配置和http配置并列,本文放到了 /usr/local/nginx/conf/nginx.conf 最后


rtmp {
    server {
        listen 1935; #监听的端口
        chunk_size 4000;
        application hls { #rtmp推流请求路径
            live on;
        }
    }
}

这里的hls是作为整个流媒体服务器的端点,并不是某一个推拉流的端点。我们可以同时开启多个推拉流,比如 :

  • rtmp://192.168.1.xxx:1935/hls/room1
  • rtmp://192.168.1.xxx:1935/hls/default
  • rtmp://192.168.1.xxx:1935/hls/test

使用OBS推流

OBS推流流程分为两个部分:

  • 设置推流来源
  • 设置推流地址、音视频参数等等

设置推流来源

本文设置的来源有两个:笔记本摄像头和播放笔记本硬盘中一个文件夹里面的图片

52fe94e6d4a76471fdb97a410fb082d5.png

画面由图片和摄像头画面合成而来,图片每2s会切换,就像幻灯片一样。

设置推流地址

本文简单起见,仅设置了推流地址,没有对音视频及其它配置做修改,全部使用默认

b5677f57d6dde76e5aa2a47c61470a1e.png

  • 服务:自定义
  • 服务器:流媒体服务端点,rtmp://192.168.1.xxx:1935/hls
  • 推流码:home。推流端点,这个值用来唯一区分某一个直播间,可以任意定义,拉流的时候将这个值拼接到rtmp://192.168.1.xxx:1935/hls后面就可以。推拉流端点需要保持一致

开始直播

如果设置都正确,此时可以点击开始直播按钮进行推流了。

推流完整地址:rtmp://192.168.1.xxx:1935/hls/home

使用VLC拉流

VLC--媒体--打开网络串流,然后输入拉流地址

rtmp://192.168.1.xxx:1935/hls/home

拉流地址就是推流地址,它们一一对应,如果一切正常将可以看到合成后的画面了。

54f2610c2886343dd24bb22facae4c8f.png

附图

https://img2024.cnblogs.com/blog/718864/202403/718864-20240313105213077-577164247.png

https://img2024.cnblogs.com/blog/718864/202403/718864-20240313105212960-709759029.png

https://img2024.cnblogs.com/blog/718864/202403/718864-20240313105213953-1808463517.png

posted @ 2024-03-13 10:52  Naylor  阅读(481)  评论(0编辑  收藏  举报