利用 OBS 推送 WEBRTC 流到 smart rtmpd
webrtc whip 推流 & whep 拉流简介
RFC 定义
通用的 webrtc 对于 SDP 协议的交换已经有对应的 RFC 草案出炉了。这就是 WHIP( push stream ) & WHEP ( pull stream ) .
WHIP RFC Link: https://www.ietf.org/archive/id/draft-ietf-wish-whip-01.html
WHEP RFC Link: https://www.ietf.org/archive/id/draft-murillo-whep-03.html
环境准备
要搭建 whip 和 whep 的整体演示环境需要准备 WHEP 推流端,sfu 服务器端,whep 拉流端。这里采用 OBS 实现 WHIP , smart rtmpd 实现 SFU, WEB player 实现 WHEP 。
- OBS 准备
OBS 支持 webrtc 的 WHIP 推流版本是 >= 30.0, 本文采用的是 Windows 版本的 30.2.3。下载地址为: https://obsproject.com/download

只有版本符合的才支持 whip 推流
- SFU 准备
smart rtmpd 支持 webrtc 的 WHIP/WHEP 版本是 >= 2024.10.10 ,本文采用的是 Windows 版本的 2024.10.10。下载地址为:https://github.com/superconvert/smart_rtmpd/blob/master/rtmpd.zip

smart rtmpd 的版本是以日期命名的,格式是:年月日 时分秒
- Web player 准备
smart rtmpd 自带的演示页面内就有 webrtc 的 WHEP 播放器,运行 smart rtmpd 后,只需输入 http://服务器地址:端口 就会进入 smart rtmpd 自带的主页面。

上图中 whip 列表包含所有的 whip 推流,点击其中一路,whep 播放器就会播放 webrtc 流
OBS 推流
- 添加媒体源

选择一个 mp4 文件添加到窗口
2. whip 设置

点击 <设置> 按钮,进入设置主界面,点击 <直播> 按钮,选择 <服务> 为 “WHIP”, <服务器> 一栏填写 WHIP URL: “http://192.168.0.10:8080/whip/v1?app=live&name=stream”
3. whip 推流
点击 <开始直播> 按钮

推流成功标志

服务器日志有 webrtc://192.168.0.10:8080/live/stream 的字样,基本上就表明推流成功了, live 就是 app 分类, stream 就是流的名字 name
Web player 拉流

访问 smart rtmpd 自带的主页面,最下面就会有 WHIP 列表,因为可能存在多路 webrtc 的 whip 推流,展开 WHIP 列表, 找到刚才的推流,点击就会通过 whep 播放 webrtc 的视频了。
视频演示
B站: https://www.bilibili.com/video/BV1Tp2dYbEfR/?spm_id_from=333.337.search-card.all.click
抖音:https://www.douyin.com/user/MS4wLjABAAAAWHrvSz-DdJeb8-RgzWZRZOAb52fjdiKaAIuIWVHTl7ZhX6wIOrL4T_MzYkCnWgGm?from_tab_name=main&modal_id=7425917377214221631&vid=7278584962377403683
相关文章:
利用 OBS 推送 WEBRTC 流到 smart rtmpd
webrtc whip 推流 & whep 拉流简介 RFC 定义 通用的 webrtc 对于 SDP 协议的交换已经有对应的 RFC 草案出炉了。这就是 WHIP( push stream ) & WHEP ( pull stream ) . WHIP RFC Link: https://www.ietf.org/archive/id/draft-ietf-wish-whip-01.html WHEP RFC Link:…...
【python】极简教程3-函数
函数是将代码组织到可重用块中的一种方法。 函数调用 Python提供了许多内置函数,例如print: print(Hello, World!)函数调用通常包含函数名,后跟圆括号,括号内是参数列表。参数是传递给函数的数据,函数会基于这些数据执行操作。 数学函数 使用math函数前需要先导入mat…...
Python案例小练习——小计算器
文章目录 前言一、代码展示二、运行展示 前言 这是用python实现一个简单的计器。 一、代码展示 def calculate(num1, op, num2):if op "":return float(num1) float(num2)elif op "-":return float(num1) - float(num2)elif op "*":return…...
仓储数字化蓝图
1、仓储能力建设 2、仓储数字化建设...
【数字图像处理】第5章 图像空域增强方法
上理考研周导师的哔哩哔哩频道 我在频道里讲课哦 目录 5.1 图像噪声 相关概念 ①图像噪声的产生 ② 图像噪声分类 ③ 图像噪声特点 5.2 图像增强方法分类 ①图像增强概念 ②图像增强目的 ③图像增强技术方法: 5.3 基于灰度变换的图像增强 1. 概述: 2. 灰度变换…...
idea 发布jar包
当你有一个能正常编译的项目,以springboot为例,有两步步骤 打包配置 打包 一、打包配置 1.点击右上角快捷按钮/文件-->项目结构,打开项目结构设置 2.项目结构-->Artifacts,如图所示选择 3.在Create JAR from Modules配置…...
c语言字符串函数strstr,strtok,strerror
1,strtok函数的使用和模拟实现 char * strtok(char * str,const char * sep) 会有static修饰变量,有记忆功能,会保存字符串的位置,下次找再继续找。 1)sep参数指向一个字符串,它包含了0个或者多个由sep字符中一个或…...
【Java】—JavaBean转换方法详解
JavaBean间的转换 ⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~😊 文章目录 JavaBean间的转换1 Apache Co…...
[Vue3核心语法] setup语法糖
一、setup 概述 setup是Vue3中一个新的配置项,值是一个函数,它是 Composition API “表演的舞台”,组件中所用到的:数据、方法、计算属性、监视......等等,均配置在setup中。 特点: setup函数返回的对象中…...
RabbitMQ 入门(三)SpringAMQP五种消息类型(Basic Queue)
一、Spring AMQP 简介 SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。 SpringAmqp的官方地址:https://spring.io/projects/spring-amqp SpringAMQP提供了三个功能: - 自动…...
2024双十一买什么好?双十一高性价比数码好物推荐!
双十一购物狂欢节即将来临,这是一年中家电和数码产品优惠力度较大的时候。然而,随着产品种类越来越丰富,选择一款合适的商品也变得越发困难。今天,我为大家推荐一些双十一期间值得入手的高品质好物,让我们一同来了解…...
MySQL 查找连续相同名称的记录组,并保留每组内时间最大的一条记录
要求:查找连续相同名称的记录组,并保留每组内时间最大的一条记录,同时计算每组记录的 num 总和。 今天有人问了我一个问题,大致就是下面这样的数据结构(原谅我实在不知道怎么描述这个问题) 然后需要得到下面…...
three.js 使用geojson ,实现中国地图区域,边缘流动效果
three.js 使用geojson ,实现中国地图区域,边缘流动效果 在线链接:https://threehub.cn/#/codeMirror?navigationThreeJS&classifyexpand&idgeoBorder 国内站点预览:http://threehub.cn github地址: https://github.co…...
数据中台业务架构图
数据中台的业务架构是企业实现数据驱动决策和业务创新的关键支撑。它主要由数据源层、数据存储与处理层、数据服务层以及数据应用层组成。 数据源层涵盖了企业内部各个业务系统的数据,如 ERP、CRM 等,以及外部数据来源,如社交媒体、行业数据…...
Docker学习笔记(2)- Docker的安装
1. Docker的基本组成 镜像(image):Docker镜像就像是一个模板,可以通过这个模板来创建容器服务。通过一个镜像可以创建多个容器。最终服务运行或者项目运行就是在容器中。容器(container):Docker…...
PostgreSql的备份和升级
目录 版本概述: 跨大版本数据迁移 QProcess 调用相关进程进行备份和恢复 版本概述: 该数据库版本主要分为主要版本和次要版本,大版本基本每年发布一次,小版本则每几个月即发布,更新较快。在10.0之前所使用的数据库版…...
联系拯救者Y9000P2022笔记本电脑进入BIOS快捷键
联系拯救者Y9000P2022笔记本电脑进入BIOS快捷键 文章目录 联系拯救者Y9000P2022笔记本电脑进入BIOS快捷键1. 进入BIOS快捷键2. 快速进入BIOS设置界面3. 快速进入启动项选择界面 1. 进入BIOS快捷键 进入BIOS设置界面的快捷键为F2快速进入启动项选择界面的快捷键为F12 2. 快速进…...
compose navigation 自定义navtype
Jetpack compose navigation with custom NavType https://www.youtube.com/watch?vqBxaZ071N0c&t182s 定义两个路由 Serializable data object DogListRouteSerializable data class DogDetailRoute(val dog: Dog,val breedSize: BreedSize ) 即两个页面,…...
实现对redis过期键监听案例
开发背景 为了实现当经纪人A提交分佣后如果三天后其他经纪人没有确认分佣就自动确认分佣,如果经纪人A修改分佣后再次提交分佣,时间重置为三天 实现方式 第一步:引入依赖 <dependency> <groupId>redis.clients</groupId> …...
yocto基础 -- bb 文件字段解析
Yocto .bb 文件字段解析 本文详细讲解了 Yocto .bb 文件中各字段的作用和用法,包括 SECTION、SRC_URI、SUMMARY 等,旨在帮助开发者更好地理解和使用 Yocto 构建系统。 目录 1. SECTION 字段 1.1 SECTION 的作用1.2 SECTION 的用法1.3 如何使用 SECTIO…...
信号建模-从雷达回波到生命体征分离(三):微动信号模型的构建与验证
1. 雷达回波中的生命体征信号解码 第一次接触生物雷达信号时,我和大多数工程师一样被复杂的数学公式劝退。直到在智慧医疗项目中亲手调试设备才发现,那些看似深奥的相位变化曲线,其实就像医生听诊器里的呼吸节奏——只要找对方法,…...
一文读懂10英寸平板尺寸:从屏幕比例到实际机身尺寸
在平板电脑市场中,"10英寸"这一规格始终占据着黄金地位。但当我们搜索"平板10寸多大长和宽"时,得到的答案往往模糊不清。作为行业观察者,我将为您深度解析10英寸平板尺寸的行业标准、设计逻辑及选购策略,带您…...
C++的std--ranges算法并行执
C的std::ranges算法并行执行:现代C的高效之道 随着现代计算机多核处理器的普及,并行计算已成为提升程序性能的关键手段。C20引入的std::ranges库不仅简化了范围操作,还通过与执行策略结合,为开发者提供了高效的并行计算能力。本文…...
AI建站工具选型指南:不同定位工具对比与筛选标准
市面上的建站工具琳琅满目,宣传语都差不多。但对于想用AI建站工具做正经生意的你来说,光看广告远远不够。你需要一套自己的筛选标准,来分辨哪个工具是“玩具”,哪个才是能帮你赚钱的“生产力工具”。这篇文章不会直接告诉你“哪个…...
不止于测距:用蓝桥杯开发板DIY一个简易超声波倒车雷达(含蜂鸣器报警)
从测距到实战:蓝桥杯开发板打造智能超声波雷达系统 第一次倒车时听到蜂鸣器急促的"滴滴"声,我意识到这个简单的超声波模块能做的远不止显示数字。作为参加过蓝桥杯的电子爱好者,我们手头的开发板其实蕴藏着解决实际问题的潜力——…...
新入职场的软件测试员,请立刻戒掉这3个学生思维
在软件测试领域,新入职的员工往往带着校园习得的学生思维,这些思维模式在学术环境中或许有效,但在职场中却成为阻碍专业成长的隐形障碍。尤其对于软件测试从业者,工作核心是保障产品质量、识别潜在风险,而非简单执行任…...
Unity游戏里加个AI助手?手把手教你用豆包Doubao-1.5-pro-32k实现流式对话(附完整C#代码)
在Unity中打造智能AI助手:用豆包Doubao-1.5-pro-32k实现沉浸式对话体验 想象一下,你的游戏角色不再只是机械地重复预设台词,而是能够根据玩家的提问做出智能回应——这种体验在《赛博朋克2077》等3A大作中已经实现,而现在…...
Sigrity Aurora (II)--Advanced Impedance Analysis Techniques
1. Sigrity Aurora阻抗分析的核心价值 在高速PCB设计领域,阻抗控制就像给信号修高速公路。想象一下,当你的信号以GHz频率在电路板上飞驰时,突然遇到路面凹凸不平(阻抗突变),信号完整性就会像失控的赛车一样…...
网络安全信息搜集全流程
概念 方法论 工具链 合法授权实践 一、信息搜集的概念与重要性 信息搜集(Information Gathering)是网络安全渗透测试、漏洞挖掘(SRC)及红队评估中的奠基性阶段。其本质是通过主动与被动手法,最大化获取目标系统的…...
Qwen3-32B-Chat镜像实战:OpenClaw自动化处理1000份PDF简历
Qwen3-32B-Chat镜像实战:OpenClaw自动化处理1000份PDF简历 1. 为什么选择这个技术组合 去年团队招聘季,我们收到了近千份PDF格式的简历。当手动处理到第37份时,我的眼睛已经开始抗议——重复性的信息提取、格式转换、关键词匹配消耗了太多精…...
