whip和whep
原文为runner365.git大佬的文章
原文链接:https://blog.csdn.net/sweibd/article/details/124552793
WHIP接口
- 什么是whip
全称: WebRTC-HTTP ingestion protocol (WHIP).
rfc地址: rfc-draft-murillo-whip-00
简单说,就是通过HTTP接口能导入webrtc媒体流。
2. webrtc publish/unpublish
2.1 webrtc publish
webrtc推流接口
方法: http post
uri: http://hostname:hostport/publish/roomId/uid
http post body: offerSdp
返回:
http body: asswerSdp
举例,向host=192.168.1.98:8090, roomId=2001, 自己作为uid=6547推流.
url为: http://192.168.1.98:8090/publish/2001/6547
post data为offerSdp
返回data为answerSdp
2.2 webrtc unpublish
本方法为优雅的关闭。
也可以暴力的关闭可以直接在客户端进行PeerConnection.Close(), 或者暴力关闭网页;
webrtc关闭推流接口
方法: http post
uri: http://hostname:hostport/unpublish/roomId/uid
http post body: null
返回:
http body:
{
“code”: 0,
“desc”: “ok”
}
举例,向host=192.168.1.98:8090, roomId=2001, 自己作为uid=6547关闭推流.
url为: http://192.168.1.98:8090/unpublish/2001/6547
post data为空
返回data为
{
“code”: 0,
“desc”: “ok”
}
- webrtc subscribe
3.1 webrtc subscribe
webrtc拉流接口:
方法: http post
uri: http://hostname:hostport/subscribe/roomId/uid/remoteUid
其中uid为自己的uid,remoteUid为想要订阅的远端uid。
http post body: offerSdp
返回:
http body: asswerSdp
举例,向host=192.168.1.98:8090, roomId=2001, 自己作为uid=6547,从远端remoteUid=4489拉流.
url为: http://192.168.1.98:8090/subscribe/2001/6547/4489
post data为offerSdp
返回data为answerSdp
3.2 webrtc unsubscribe
本方法为优雅的关闭。
也可以暴力的关闭可以直接在客户端进行PeerConnection.Close(), 或者暴力关闭网页;
webrtc关闭拉流接口
方法: http post
uri: http://hostname:hostport/unsubscribe/roomId/uid/remoteUid
http post body: null
返回:
http body:
{
“code”: 0,
“desc”: “ok”
}
举例,向host=192.168.1.98:8090, roomId=2001, 自己作为uid=6547关闭对远端remoteUid=4489拉流.
url为: http://192.168.1.98:8090/unsubscribe/2001/6547/4489
post data为空
返回data为
{
“code”: 0,
“desc”: “ok”
}
- 客户端demo
提供客户端web demo: webrtc whip sdk
webrtc sfu服务: cpp_media_server
————————————————
版权声明:本文为CSDN博主「runner365.git」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sweibd/article/details/124552793
相关文章:
whip和whep
原文为runner365.git大佬的文章 原文链接:https://blog.csdn.net/sweibd/article/details/124552793 WHIP接口 什么是whip 全称: WebRTC-HTTP ingestion protocol (WHIP). rfc地址: rfc-draft-murillo-whip-00 简单说,就是通过HTTP接口能导入webrtc媒…...
SpringBoot集成jjwt和使用
1.引入jwt依赖(这里以jjwt为例,具体其他jwt产品可以参见jwt官网) <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version> </dependency>…...
RedisConnectionFactory is required已解决!!!!
1.起因🤶🤶🤶🤶 redis搭建完成后,准备启动主程序,异常兴奋,结果报错了!!!! 2.究竟是何原因 😭😭😭…...
redis的高可用之持久化
1、redis的高可用考虑指标 (1)正常服务 (2)数据容量的扩展 (3)数据的安全性 2、redis实现高可用的四种方式 (1)持久化 (2)主从复制 (3&…...
onnx模型转换opset版本和固定动态输入尺寸
背景:之前我想把onnx模型从opset12变成opset12,太慌乱就没找着,最近找到了官网上有示例的,大爱onnx官网,分享给有需求没找着的小伙伴们。 1. onnx模型转换opset版本 官网示例: import onnx from onnx im…...
远程运维如何更高效的远程管理?向日葵的这几项功能会帮到你
远程运维如何更高效的远程管理?向日葵的这几项功能会帮到你 具备一定规模的企业,其IT运维需求普遍会面临设备数量众多、难以统一高效管理、始终存在安全敞口等问题,尤其是针对分部广泛的无人值守设备时,更是如此。 举一个简单的例…...
python BDD 的相关概念
在Python 语言中进行BDD的规格和测试文件的编写的时候,常常会遇到下面的概念: Fixture : 测试设施。设定测试环境的预设状态或值的机制。Background: 背景。所有场景的公共部分。Scenario: 场景。Given : 前置条件Whe…...
【Exception】Error: Dynamic require of “path“ is not supported
Talk is cheap, show me the code. 环境 | Environment kversionOSwindows 11Node.jsv18.14.2npm9.5.0vite5.0.0vue3.3.8 报错日志 | Error log >npm run dev> app10.0.0 dev > viteERROR failed to load config from C:\code\frontend\app1\vite.config.js …...
【蓝桥杯选拔赛真题25】C++两个数比大小 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析
目录 C/C++两个数比大小 一、题目要求 1、编程实现 2、输入输出 二、算法分析...
C++学习——C++运算符重载(含义、格式、示例、遵循的规则)
以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 一、运算符重载的含义 所谓重载,就是赋予新的含义。函数重载(Function Overloading)可以让一个函数名有多种功能,在不同情况下进行不同…...
【unity实战】unity3D中的PRG库存系统和换装系统(附项目源码)
文章目录 先来看看最终效果前言素材简单绘制库存UI前往mixamo获取人物模型动画获取一些自己喜欢的装备物品模型库存系统换装系统装备偏移问题添加消耗品最终效果源码完结 先来看看最终效果 前言 之前2d的换装和库存系统我们都做过不少了,这次就来学习一个3d版本的&…...
编程语言发展史:C语言的诞生及其影响
预计更新 第一部分:早期编程语言 1.1布尔代数和机器语言 1.2汇编语言的出现和发展 1.3高级语言的兴起 第二部分:主流编程语言 1.1 C语言的诞生及其影响 1.2 C语言的发展和应用 1.3 Java语言的出现和发展 1.4 Python语言的兴起和特点 1.5 JavaScript语言…...
(二)pytest自动化测试框架之添加测试用例步骤(@allure.step())
前言 在编写自动化测试用例的时候经常会遇到需要编写流程性测试用例的场景,一般流程性的测试用例的测试步骤比较多,我们在测试用例中添加详细的步骤会提高测试用例的可阅读性。 allure提供的装饰器allure.step()是allure测试报告框架非常有用的功能&am…...
【用unity实现100个游戏之16】Unity程序化生成随机2D地牢游戏2(附项目源码)
文章目录 先看看最终效果前言生成走廊生成房间修复死胡同增加走廊宽度获取走廊位置信息集合方法一方法二 源码完结 先看看最终效果 前言 上期已经实现了房间的生成,本期紧跟着上期内容,生成走廊并结合上期内容生成连通的房间。 生成走廊 修改Procedur…...
潮玩宇宙大逃杀游戏开发源码说明
潮玩宇宙大逃杀游戏是一款简单而刺激的游戏。玩家在倒计时结束前从8个房间中选择一个房间并投入宝石。倒计时结束后,系统会自动生成一个敌人,然后随机挑选一个房间并清除这个房间内的人。其余7个房间内的玩家就可以按照投入比例获得被清除掉玩家的宝石。…...
UE5 操作WebSocket
插件:https://www.unrealengine.com/marketplace/zh-CN/product/websocket-client 参考:http://dascad.net/html/websocket/bp_index.html 1. 安装Plugings 2.测试websocket服务器 http://www.websocket-test.com/ 3.连接服务器 如果在Level BP里使用&a…...
Linux文件
目录 一、基本概念 二、研究进程和被打开文件的关系 (一)w方式 (二)a方式 三、认识系统接口,操作文件 (一)认识文件描述符 (二)举例 (三)…...
素短语的定义
素短语,是指至少含有一个终结符的短语,并且除自身外,不包含更小的素短语。 最左素短语是句型中最左边的素短语。...
【华为OD题库-033】经典屏保-java
题目 DVD机在视频输出时,为了保护电视显像管,在待机状态会显示"屏保动画”,如下图所示,DVD Logo在屏幕内来回运动,碰到边缘会反弹:请根据如下要求,实现屏保Logo坐标的计算算法 1、屏幕是一个800 * 600像素的矩形&…...
clang+llvm多进程gdb调试
clangllvm多进程gdb调试 前言1. 命令行gdb2. 父进程调试3. 子进程调试4. 返回父进程 前言 在学习新增llvm的优化pass时,需要跟踪clang及llvm的调用栈。然而llvm通过posix_spawn()创建了新进程,这使得gdb调试必须有一定的技巧了。 1. 命令行gdb 以下命…...
STM32 CubeMX配置TM1650驱动数码管实战:从HAL库到显示‘Hello’
STM32 CubeMX配置TM1650驱动数码管实战:从HAL库到显示‘Hello’ 在嵌入式开发领域,如何快速实现硬件驱动并验证功能是每个工程师的必修课。今天我们就来探讨一个极具代表性的案例:使用STM32CubeMX配置TM1650驱动四位数码管显示"Hello&qu…...
5分钟改造小爱音箱:MiGPT让你的人工智障变身AI管家
5分钟改造小爱音箱:MiGPT让你的人工智障变身AI管家 【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 还在为小爱音箱的"人工智障&…...
Arm Morello平台DMC-Bing内存控制器架构与ECC机制解析
1. Arm Morello平台DMC-Bing内存控制器架构解析 DMC-Bing是Arm Morello系统开发平台中的动态内存控制器核心组件,基于成熟的DMC-620架构进行功能扩展。与标准DMC-620相比,Bing版本在内存安全监控和性能分析方面进行了专项增强,主要体现在三个…...
保姆级教程:在YOLOv9中集成CARAFE模块,从代码修改到配置文件详解
深度解析:YOLOv9集成CARAFE上采样模块的完整实践指南 在目标检测领域,YOLO系列算法一直以其高效的检测速度和良好的精度平衡著称。YOLOv9作为该系列的最新成员,在保持实时性的同时进一步提升了检测精度。然而,对于追求极致性能的…...
Java多租户数据隔离实战指南:从Schema分离到动态SQL过滤的7种生产级方案
更多请点击: https://intelliparadigm.com 第一章:Java多租户数据隔离的核心原理与安全边界 Java 多租户系统中,数据隔离是保障租户间信息不可见、不可篡改的生命线。其核心原理在于**在数据访问层强制注入租户上下文**,确保每次…...
CUDA_LAUNCH_BLOCKING=1 之外:更优雅地定位PyTorch GPU异步报错(VSCode调试实战)
超越CUDA_LAUNCH_BLOCKING:PyTorch GPU异步报错高阶调试指南 当你在深夜盯着屏幕上突然弹出的RuntimeError: CUDA error: device-side assert triggered时,是否曾感到束手无策?设置CUDA_LAUNCH_BLOCKING1虽然能同步错误报告,但在大…...
Gemma-4-26B-A4B-it-GGUF部署教程:开源大模型镜像免配置方案——从裸机到7860端口可用仅需8分钟
Gemma-4-26B-A4B-it-GGUF部署教程:开源大模型镜像免配置方案——从裸机到7860端口可用仅需8分钟 1. 项目概述 Gemma-4-26B-A4B-it-GGUF 是 Google Gemma 4 系列中高性能、高效能的 MoE(混合专家)聊天模型,具备256K tokens的超长…...
别再为Java路径头疼了!手把手教你解决Neo4j Community 4.7.0在Windows上的经典安装报错
别再为Java路径头疼了!手把手教你解决Neo4j Community 4.7.0在Windows上的经典安装报错 当你在Windows系统上兴致勃勃地安装Neo4j Community 4.7.0,准备开始你的图数据库之旅时,突然遭遇"Invoke-Neo4j : Could not find java"这样的…...
初创团队如何通过 Taotoken 统一管理多个 AI 模型的开发与成本
初创团队如何通过 Taotoken 统一管理多个 AI 模型的开发与成本 1. 多模型接入的挑战与解决方案 初创技术团队在开发 AI 产品原型时,往往需要同时调用多个大模型进行功能验证和效果对比。传统模式下,开发者需要为每个模型单独注册账号、申请 API Key、对…...
LinkSwift:一款基于JavaScript的网盘文件下载地址获取工具
LinkSwift:一款基于JavaScript的网盘文件下载地址获取工具 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / …...
