基于SRS+OBS搭建直播系统

这段时间与视频,直播相关的技术不可谓不热,今天我们就近距离接触下,尽早搭上这班车!

我们先看一张效果图  

左边是OBS 推流端,右边是VLC播放器,稍微有延迟!

本文是基于VMware(12.5.7)+Ubuntu(16.04)搭建

一:准备:

1.VMware(12.5.7)

2.Ubuntu(16.0.4)

3.Git

4.RTMP媒体服务器(SRS)

5.推流端(OBS)

6.拉流端(VLC)

二:安装

2.1:安装VMware

  2.1.1:下载VWware 

     VWware官网:https://www.vmware.com/cn.html

  2.1.2:安装破解  

    比较简单,请自行百度,此处提供参考虚拟机安装教程

2.2:安装Ununtu

 2.2.1:下载

    Ubuntu官网:https://www.ubuntu.com/download

  2.2.2:安装  

   比较简单,请自行百度,此处提供参考:VMware安装Ubuntu

 2.2.3:其他

  Ubuntu如何设置全屏显示,搜狗输入法安装,联网等不在次节课范畴,请自行百度解决!

2.3:安装Git

2.3.1:ALT+Control+T 调出终端


2.3.2:输入git查看系统是否已经安装


2.3.3:如果未安装,执行“sudo apt-get install git”指令,安装git,出现如图提示输入“Y”


2.3.4:输入"git --version"查看当前版本


2.4:安装SRS

srs Github地址为:https://github.com/ossrs/srs,里面有使用指导,按照安装步骤操作即可

2.4.1:新建本地SRS存放文件夹,文件名live


2.4.2:打开终端,进入live文件夹


2.4.3:执行"git clone https://github.com/ossrs/srs &&cd srs/trunk"指令,时间较长8分钟左右

2.4.4:执行"./configure && make"编译SRS

2.4.5:执行"./etc/init.d/srs start"或“ ./objs/srs -c conf/srs.conf”启动服务
其他指令如:
停止 ./etc/init.d/srs stop 
重启 ./etc/init.d/srs restart

2.5:安装OBS

2.5.1:安装OBS首先安装FFMPEG

2.5.1.1:添加源:sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next


2.5.1.2:更新源:sudo apt-get update


2.5.1.3:安装FFPMEG:sudo apt-get install ffmpeg


2.5.2:安装OBS

2.5.2.1:添加源:sudo add-apt-repository ppa:obsproject/obs-studio


2.5.2.2:更新源:sudo apt-get update


2.5.2.3:安装:sudo apt-get install obs-studio


2.5.3:安装成功之后重启才能看到,稍后上传图片


2.6:安装VLC

2.6.1:VLC官网地址:http://www.videolan.org/ 


2.6.2:下载对应版本的VLC,此处选择Linux


2.6.3:点击下载


2.6.4:开始安装


2.6.5 重启查看VLC


三:设置

3.1:OBS 推流端配置

3.1.1:打开终端输入"ifconfig -a"查看本机IP地址


3.1.2:打开OBS在来源中选择一种,本次选择幻灯片


3.1.3:点击设置,打开设置选项卡,流选项中类型选择自定义流媒体服务器,url为

rtmp://你的ip/你喜欢的url

3.1.4:在设置选项卡中,设置推送流的帧率等

3.1.5:检查无误后,点击开始推流(请确保srs已开启)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

四:测试

VLC测试推流结果

4.1:打开VLC,选择打开媒体->网络,在网络协议中输入推流地址


4.2:查看显示结果(左侧为推流,右侧为VLC显示,有延迟)

参考:

轻松入门Android直播相关技术 从0搭建直播系统

Ubuntu安装OBS

原文:https://blog.csdn.net/calvin_zhou/article/details/78613422

### 关于直播推流和拉流的实现方法 #### 一、UniApp H5 手机端直播推流与实时播放 在 UniApp 的 H5 平台上,可以通过调用 WebRTC 或 RTMP 协议来完成前端的直播推流功能。具体来说,可以利用 HTML5 提供的 MediaDevices API 获取用户的摄像头权限并捕获音视频数据[^1]。 以下是基于 UniApp 和 RTMP 推流的一个简单代码示例: ```javascript // 初始化摄像头设备 async function initCamera() { const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true }); document.getElementById('localVideo').srcObject = stream; } // 开始推流到服务器 function startStream(serverUrl) { const localStream = document.getElementById('localVideo').srcObject; const peerConnection = new RTCPeerConnection(); // 添加本地媒体轨道 localStream.getTracks().forEach(track => peerConnection.addTrack(track, localStream)); // 设置远程描述符 peerConnection.setRemoteDescription(new RTCSessionDescription({ type: 'offer', sdp: serverUrl, })).then(() => { console.log('Pushing Stream to Server...'); }).catch(error => { console.error('Error setting remote description:', error); }); } ``` 上述代码展示了如何通过 `navigator.mediaDevices` 调用用户设备上的麦克风和摄像头,并将其封装成一个可被传输的数据流发送给服务端。 --- #### 二、Obs+SRS+Nginx 实现直播推流与拉流 对于更复杂的场景,比如需要支持规模并发或者自定义协议的情况,可以选择 OBS(Open Broadcaster Software)、SRS(Simple-RTMP-Server)以及 Nginx 来构建完整的直播架构[^2]。 OBS 主要用于采集客户端的画面和声音信号;而 SRS 则作为中间层负责处理 RTMP 流量转发;最后由配置好 rtmp 插件模块后的 Nginx 完成 HTTP-FLV/HLS 拉取请求解析工作[^3]。 下面是一个简单的部署流程概述: 1. **安装依赖环境** - Ubuntu 系统下执行命令: ```bash sudo apt update && sudo apt install nginx ffmpeg libnginx-mod-http-flv flvtool2 ``` 2. **下载编译 SRS** - 访问官方仓库克隆项目文件夹后运行脚本进行初始化操作即可获得最新版本的服务程序包。 3. **修改 NGINX 配置文件** 将默认站点路径下的 conf 文件替换为我们所需的模板样式如下所示: ```conf http { include /etc/nginx/mime.types; server { listen 8080; location /live { types { application/vnd.apple.mpegurl m3u8; } root html; add_header Cache-Control no-cache; add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods GET,HEAD,OPTIONS; add_header Access-Control-Max-Age 3600; if ($request_method ~* "(GET|HEAD)") { break; } proxy_pass http://localhost:8081/; proxy_set_header Host $host; proxy_http_version 1.1; chunked_transfer_encoding off; } } rtmp { server { listen 1935; application live { live on; record off; } } } } ``` 4. 启动所有组件并测试连接状态是否正常。 --- #### 三、Nginx 搭建带鉴权机制的直播推流服务 如果希望进一步增强系统的安全性,则可以在原有的基础上加入身份认证环节。例如,在每次发起新的会话之前都需要先向指定接口提交用户名密码组合得到授权令牌再继续后续动作。 这里给出一段 PHP 版本的身份校验逻辑片段仅供参考学习之用: ```php <?php $authKey = $_SERVER['HTTP_AUTHORIZATION']; if (!$authKey || !preg_match('/Bearer\s+(\S+)/', $authKey, $matches)) { header('WWW-Authenticate: Bearer realm="Access Denied"'); die(json_encode(['error' => 'Invalid token'])); } else { list(,$token)=explode(" ",trim($authKey),2); // Verify Token Here... echo json_encode(["status"=>"success"]); } ?> ``` 此段代码实现了基本的 OAuth2 bearer tokens 方式的访问控制策略,可以根据实际需求调整算法强度或引入第三方库简化开发过程。 --- #### 四、知识付费类 HTTPS 方法教程 针对某些特殊行业领域内的应用案例分析——如教育培训机构推出的线上课程资源分享平台等业务形态而言,除了常规的技术选型之外还需要特别注意网络安全防护措施方面的考量因素[^4]。 以 Workerman 结合 Aliyun Live Service 构建的知识支付体系为例说明其运作原理致分为以下几个方面展开讨论: 1. **检查必要条件**:确认防火墙规则允许特定范围内的 IP 地址能够顺利抵达目标主机监听端口上; 2. **启动后台进程管理器**:确保即使当前终端意外断开也不会影响整体框架稳定性表现; 3. **调试回调函数注册情况**:按照服务商文档指引逐步完善各项参数设定直至完全匹配预期行为模式为止。 最终形成一套既满足性能指标又能兼顾用户体验质量标准的整体解决方案设计思路图谱。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值