OBS+Nginx+VLC推拉流

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
EMR Serverless StarRocks,5000CU*H 48000GB*H
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 【2月更文挑战第6天】推拉流分为推流和拉流。推流就是将client端的视频画面推送到流媒体服务器;拉流就是另外一个client端从流媒体服务器获取视频画面。

[toc]

概述

推拉流分为推流和拉流。推流就是将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

目录
相关文章
|
2月前
|
应用服务中间件 Linux nginx
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
《FFmpeg开发实战》书中介绍了如何使用FFmpeg向网络推流,简单流媒体服务器MediaMTX不适用于复杂业务。nginx-rtmp是Nginx的RTMP模块,提供基本流媒体服务。要在Linux上集成rtmp,需从官方下载nginx和nginx-rtmp-module源码,解压后在nginx目录配置并添加rtmp模块,编译安装。配置nginx.conf启用RTMP服务,监听1935端口。使用ffmpeg推流测试,如能通过VLC播放,表明nginx-rtmp运行正常。更多详情见书本。
68 0
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
|
4月前
|
网络协议 应用服务中间件 Apache
Nginx直播服务器搭建及推拉流测试
Nginx直播服务器搭建及推拉流测试
176 2
|
4月前
|
应用服务中间件 nginx Windows
ffmpeg推流到nginx服务器,并使用vlc播放rtmp视频
ffmpeg推流到nginx服务器,并使用vlc播放rtmp视频
274 0
|
Web App开发 应用服务中间件 PHP
Nginx搭建RTMP推拉流服务器
如题,今天就来实现一个推拉流服务器,模拟下推流后被客户端拉流看到效果。 详细步骤如下 - 安装Nginx - 安装FFmpeg - 安装VLC客户端 安装Nginx 在Mac上有一个很好用的包管理插件,名为homebrew。
3540 0
|
12天前
|
应用服务中间件 nginx Docker
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
这篇文章介绍了如何通过域名在本地访问虚拟机上的nginx服务,包括创建nginx容器、修改配置文件、修改本地host文件以及进行访问测试的详细步骤。文章提供了具体的Docker命令来创建并配置nginx容器,展示了配置文件的修改示例,说明了如何在本地系统的hosts文件中添加虚拟机IP和自定义域名,以及如何通过浏览器进行测试访问。
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
|
9天前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
9天前
|
缓存 负载均衡 应用服务中间件
【揭秘】nginx代理配置全攻略:从零到精通,一文带你玩转高效网络代理的秘密武器!
【8月更文挑战第22天】nginx是一款高性能的HTTP与反向代理服务器,支持代理服务、负载均衡及缓存等功能,有助于提升网站响应速度和安全性。首先需确保已安装nginx,可通过包管理器进行安装。安装后启动并确认nginx运行状态。接着编辑配置文件(通常位于`/etc/nginx/nginx.conf`),设置代理转发规则,例如指定目标服务器地址和请求头信息。配置完成后测试有效性并重新加载nginx以应用更改。可以通过部署简易HTTP服务器验证代理功能是否正常工作。此外,还可以通过扩展配置文件实现更复杂的代理需求,如基于路径的代理和SSL加密等。
40 2
|
16天前
|
Web App开发 应用服务中间件 网络安全
如何在 Apache 和 Nginx 上配置 OCSP Stapling
如何在 Apache 和 Nginx 上配置 OCSP Stapling
34 8
|
16天前
|
jenkins 应用服务中间件 持续交付
如何配置 Nginx 作为 Jenkins 的反向代理并启用 SSL 加密
如何配置 Nginx 作为 Jenkins 的反向代理并启用 SSL 加密
36 8
|
10天前
|
缓存 负载均衡 应用服务中间件
如何配置 NGINX 反向代理
【8月更文挑战第21天】
43 0
如何配置 NGINX 反向代理