利用 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…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...
uni-app学习笔记三十五--扩展组件的安装和使用
由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...
pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...
