当前位置: 首页 > news >正文

WebRTC系列实战-自定义RTP中的extension

文章目录

  • 1. 新增extensionsId;
    • 1.1 新增自定义extension
    • 1.2 准备添加到sdp相关操作
    • 1.3 对header长度返回的修改:
  • 2. 自定义extesion的写入及注册到extensionMap中
    • 2.1 添加到RTPheader中
    • 2.2. 大小限制
    • 2.3. 是否注册限制
    • 2.4. 自定义extension注册需要修改的位置
  • 3.接收端解析及注册extensions
    • 对应header的解析
  • 补充

Webrt中本身自定义了很多的rtp extension。例如absltime,audioLevel,videoRotaion,等,但是有时候我们希望额外发送一些我们自定义 的信息,比如:说话人的信息等,这里就需要自定义我们自己的rtp extension了,本文将详细介绍如何通过修改源码的方式实现发送自定义的信息;

1. 新增extensionsId;

1.1 新增自定义extension

  1. 头文件修改
    在rtp_header_extesions.h文件中定了了WebRTC所有使用的extensions相关的类,如果需要自定义实现,我们就需要修改这个文件实现,在这个头文件的最后添加以下代码:
class RtpCustomData{public:static constexpr RTPExtensionType kId = kRtpExtensionCustomDataOfExtensions;<

相关文章:

WebRTC系列实战-自定义RTP中的extension

文章目录 1. 新增extensionsId;1.1 新增自定义extension1.2 准备添加到sdp相关操作1.3 对header长度返回的修改:2. 自定义extesion的写入及注册到extensionMap中2.1 添加到RTPheader中2.2. 大小限制2.3. 是否注册限制2.4. 自定义extension注册需要修改的位置3.接收端解析及注…...

std::function和std::bind函数

std::function和std::bind是C11引入的功能强大的库组件&#xff0c;用于处理函数对象和函数调用的高级操作。它们极大地增强了C处理回调、函数指针和函数对象的能力。 std::function std::function是一个通用的、多态的函数封装器&#xff0c;可以容纳任何可调用的目标——包…...

补码的理解,想明白了觉得还挺有趣的

原因&#xff1a; 之前会一直好奇补码为什么是这么设计的&#xff0c;刚刚发呆的时候突然就明白了。 设计目的&#xff1a; 要理解&#xff0c;补码的设计初衷是为了计算机的计算问题。计算机的加法计算是非常简单的&#xff0c;但是对于减法&#xff0c;因为要借位&#xf…...

FuTalk设计周刊-Vol.027

&#x1f525;&#x1f525;交互体验 创意运营&#x1f525;&#x1f525; 1、「AIGC实战」城市消费券项目经验 随着AI图像生成技术的高速发展&#xff0c;以Midjourney、Stable diffusion为例的AI工具引起了大家广泛的研究和应用浪潮&#xff0c;也印证了早期流传在AIGC圈的…...

抖音外卖服务商有哪些,盘点这几家正规服务商!

当前&#xff0c;抖音外卖的关注度不断上涨&#xff0c;抖音外卖服务商也逐渐成为了众多创业者心中的理想创业赛道。在此背景下&#xff0c;抖音外卖服务商的入局途径多次引发创业者热议&#xff0c;以抖音外卖服务商有哪些公司为代表的相关话题更是长期位居创业者问题榜单的前…...

sh脚本模块笔记

sh脚本模块笔记 1. 如果不存在&#xff0c;则创建指定目录2. 检测python启动指令 记录一些sh脚本中用到过的模块 1. 如果不存在&#xff0c;则创建指定目录 这个脚本首先会检查指定的目录是否存在&#xff0c;如果存在则会打印错误消息并退出&#xff0c;否则会创建该目录&am…...

关于服务器的一些知识

1. 云服务器 和 轻量应用服务器 腾讯云中的"云服务器"&#xff08;Cloud Virtual Machine, CVM&#xff09;和"轻量应用服务器"&#xff08;Lite Cloud Server&#xff09;都是提供云端计算资源的服务&#xff0c;但它们在定位、特性和使用场景上存在一些差…...

力扣-和为K的子数组

题目-和为 K 的子数组 解法1&#xff1a;两层for循环 public class T560 {public static int subarraySum(int[] nums, int k) {int res 0;for (int i 0; i < nums.length; i) {int tempSum 0;for (int j i; j < nums.length; j) {tempSum nums[j];if (tempSum k)…...

写一个坏越个人天地(五)

昨天整了半天天气api还是有点小问题。一天50次真的不够我test的。一气之下还是全删了改用高德api。把接口写在了后端&#xff0c;这样我启动界面后就可以直接通过接口在后端嘎嘎处理逻辑了。再整理返回就好了 不过高德api好像获取地址的概率好低&#xff0c;于是我还是整了个获…...

步步精科技诚邀您参加2024慕尼黑上海电子展

尊敬的客户&#xff1a; 我们诚挚地邀请您参加即将于2024年7月8日至7月10日在上海新国际博览中心举办的2024慕尼黑上海电子展&#xff08;electronica China&#xff09;。此次展会汇聚了国内外优秀企业&#xff0c;展示从元器件到系统集成方案的完整产品链&#xff0c;为各行…...

Spring Boot中如何配置和使用多数据源

Spring Boot中如何配置和使用多数据源 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我们将深入探讨如何在Spring Boot应用中配置和使用多数据…...

vue3 【提效】全局布局 vite-plugin-vue-layouts 实用教程

一个常见的需求是&#xff0c;同模块的若干页面需要使用同一种布局&#xff0c;比如俱乐部相关的页面的顶部需要展示俱乐部的名称&#xff0c;其他页面顶部需要展示网站名称。 通常实现的方法是&#xff0c;将俱乐部的名称和网站名称定义成公共组件&#xff0c;在每个页面都书…...

前端性能优化-实测

PageSpeed Insights 性能测试 今天测试网站性能的时候发现一个问题&#xff0c;一个h2标签内容为什么会占据这么长的渲染时间&#xff0c;甚至有阶段测到占据了7000多毫秒&#xff0c;使用了很多方法都不能解决&#xff0c;包括了修改标签&#xff0c;样式大小等&#xff0c;当…...

【Linux】初识操作系统

一、冯•诺依曼体系结构 在学习操作系统之前&#xff0c;我们先来认识一下冯•诺依曼体系结构&#xff0c;我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 截至目前&#xff0c;我们所认识的计算机&am…...

等保2.0中,如何确保云服务提供商的数据主权合规?

等保2.0中云服务提供商的数据主权合规措施 等保2.0&#xff08;网络安全等级保护2.0&#xff09;是中国的网络安全标准&#xff0c;旨在确保云服务提供商的数据主权合规。以下是一些关键措施和要求&#xff1a; 数据地理位置要求&#xff1a;云服务提供商必须保证所有基础设施位…...

【AI大模型】Transformers大模型库(十四):Datasets Viewer

目录 一、引言 二、Datasets Viewer数据查看器 2.1 概述 2.2 示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库&#xff0c;为huggingface上数以万计的预训练大模型提供预测、训练等服务。 &#x1f917; Transformers 提供了数以千计的预训练…...

一个例子理解傅里叶变换的计算过程

假设我们有一个简单的信号&#xff0c;由两个不同频率的正弦波组成&#xff0c;我们希望通过傅里叶变换来分析其频谱。 示例信号 假设我们有一个信号 &#xff1a; 这个信号由两个频率成分组成&#xff1a;一个50 Hz的正弦波和一个120 Hz的正弦波&#xff0c;后者的振幅是前者…...

2-2到2-4

计算出所有人的平均年龄&#xff1a; val lines sc.textFile("/root/data/scala/people/page.txt") val count lines.count() val total lines.map(line > line.split(" ")(1)).map(t>t.trim.toInt).collect().reduce((a,b)>ab) val avgAge …...

Vatee万腾平台:一站式智慧服务,让生活更美好

在数字化浪潮席卷全球的今天&#xff0c;我们生活的方方面面都在经历着前所未有的变革。Vatee万腾平台凭借其一站式智慧服务&#xff0c;正成为推动这场变革的重要力量&#xff0c;让我们的生活变得更加美好。 Vatee万腾平台&#xff0c;作为一家专注于提供智慧服务的领军企业&…...

如何选择一个好的汽车油封制造商?

汽车的每一个零部件都至关重要&#xff0c;其中&#xff0c;油封的作用更是不可忽视。它们确保了液体和气体在汽车内部的正确流动&#xff0c;防止了泄漏。因此&#xff0c;选择一个可靠的汽车油封制造商就显得尤为重要。那么&#xff0c;我们应该如何做出明智的选择呢? 首先…...

构建高效的电商返利系统:架构设计与实现

构建高效的电商返利系统&#xff1a;架构设计与实现 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 电商返利系统作为连接消费者和商家的桥梁&#xff0c;能够…...

如何使用 Python 交互式解释器?

1. 什么是Python交互式解释器&#xff1f; Python交互式解释器是一种REPL&#xff08;Read-Eval-Print Loop&#xff09;环境。它会读取用户输入的代码&#xff0c;执行代码&#xff0c;并输出结果&#xff0c;随后等待下一个用户输入。这种交互方式使得Python非常适合快速原型…...

C++日期类的完整实现,以及this指针的const修饰等的介绍

文章目录 前言一、日期类的实现二、this指针的const修饰总结 前言 C日期类的完整实现&#xff0c;以及this指针的const修饰等的介绍 一、日期类的实现 // Date.h #pragma once#include <iostream> using namespace std;#include <assert.h>class Date {// 友元函…...

缓冲区溢出

本文作者&#xff1a;杉木涂鸦智能安全实验室 前置知识点 栈 栈&#xff08;Stack&#xff09;是计算机中的一种数据结构&#xff0c;用于存储临时数据。它的特点是后入先出&#xff08;LIFO&#xff09;&#xff0c;只能在栈顶添加或删除数据。在程序中&#xff0c;栈被用于…...

step7:“模拟量界面”逻辑

文章目录 文章介绍效果图AnalogPage.qml结构图调用 SerialPortHandler.sendData(message); serialporthandler.cpp 文章介绍 之前的6步实现了案例MF的界面设计和串口界面的逻辑设计&#xff0c;本文将实现模拟量界面的逻辑设计 新增功能&#xff1a; 1&#xff09;弹出提示框 …...

Arduino - 继电器

Arduino - 继电器 In a previous tutorial, we have learned how to turn on/off an LED. In this tutorial, we are going to learn how to turn on/off some kind of devices that use the high voltage power supply(such as a light bulb, fan, electromagnetic lock, lin…...

状态压缩DP——AcWing 327. 玉米田

状态压缩DP 定义 状态压缩 DP 是一种通过二进制压缩状态的动态规划算法。它通过使用位运算来加速状态的转移和计算&#xff0c;从而提高算法的效率。 注意事项 数据范围&#xff1a;状态压缩 DP 通常适用于数据范围较小的问题&#xff0c;因为它需要使用二进制来表示状态&a…...

kafka(二)安装部署(2)windows

目录 一、前提 1、jdk 2、Zookeeper 2.1、解压 2.2、创建data文件夹 2.3、配置文件 2.4、添加环境变量 2.5、启动zk&#xff1a;zkServer 2.6、客户端 3、Scala 3.1、下载安装 3.2、配置环境变量 3.3、验证是否安装成功 二、kafka下载安装 1、下载 2、安装 2.1…...

aliplayer Server returned 403 Forbidden (access denied)

最近在接入阿里云播放器的sdk,项目的播放地址是m3u8的,h265的url 输入播放源以后播放报错,提示403,拒绝访问,起初以为是crt路径问题和key的问题,然后检查了以后没问题,后来又看了一下是不是白名单的问题,但是项目资源没通过阿里云平台存储 AVPUrlSource *source [[AVPUrlSou…...

单例模式(下)

文章目录 文章介绍步骤安排及单例讲解step1&#xff1a;注册单例类型&#xff08;main.cpp&#xff09;step2&#xff1a;定义类和私有构造函数&#xff08;keyboardinputmanager.h&#xff09;step3:&#xff08;keyboardinputmanager.cpp&#xff09;step4&#xff1a;在qml中…...

在线网站系统客服/品牌策划

随着软件快速交付需求的增长&#xff0c;越来越多的企业开始通过DevOps方法加速软件开发速度但这样的话&#xff0c;有时候就无法保证质量&#xff0c;所以今天小墨就来给大家介绍10款主流的软件测试工具&#xff0c;看好啦。 1、UFT / QTP UFT&#xff0c;前身为Quick Test …...

太原网站优化方案/app推广引流渠道

概念&#xff1a; 1. 宏任务&#xff1a;当前调用栈中执行的代码成为宏任务。&#xff08;主代码快&#xff0c;定时器等等&#xff09;。 2.微任务&#xff1a; 当前&#xff08;此次事件循环中&#xff09;宏任务执行完&#xff0c;在下一个宏任务开始之前需要执行的任务,可…...

模特拍摄/搜索引擎优化seo怎么做

1. CCCollectionView下载 下载地址&#xff1a;https://github.com/lanou3g/CCCollectionView CCCollectionView是一个可提供多行多列展示的组合控件&#xff0c;支持背景设置、单选、多选、边距设置、纵向滑动等多项功能。 目前仅支持cocos2d-x-3.x 2. 如何调用CCCollectio…...

做网站销售是干什么的/培训课程有哪些

# -*- coding: utf-8 -*- import matplotlib.pyplot as plt from skimage.feature import local_binary_pattern import numpy as np import cv2""" 局部二值模式 LBP 1. 在原始图像中取一个3 * 3的区域2. 以中心区域像素为阈值&#xff0c;将周围像素值与其进行…...

公司网站工程案例怎么做/灰色产业推广引流渠道

使用Vue CLI创建 Vue CLI是Vue官方提供的一个命令行工具&#xff0c;可以帮助我们快速搭建和管理Vue项目。以下是使用Vue CLI创建Vue项目的步骤&#xff1a; 1.1 安装Vue CLI 在终端或命令行中输入以下命令&#xff0c;安装Vue CLI&#xff1a; npm install -g vue/cli 1.…...

wordpress博客修改/免费个人自助建站

对于oracle日志组来说&#xff0c;每组日志最少一个成员&#xff0c;如果这个成员被破坏了会导致整个日志组都不可以被访问了&#xff0c;在数据库启动还有数据库要访问这组日志的时候会失败。为了避免这种情况要保证每组日志成员至少两个以上&#xff0c;不同的成员要放在不同…...