基于libopenh264 codec的svc分层流实现方案
OpenH264 http://www.openh264.org/ 是标准的H.264 encoder/decoder. ffmpeg已经集成libopenh264,但不支持svc特性。
openh264 encoder支持svc特性:
1. 时域4层:Temporal scalability up to 4 layers in a dyadic hierarchy
2. 空域4层:Spatial simulcast up to 4 resolutions from a single input
Temporal scalability指的是FPS,定义为:{30,24,16,10};
Spatial simulcast指的是分辨率,定义为:
int arrHorW[]={1920, 1280, 800, 640 };
int arrHorH[]={1080, 720, 450, 360 };
通过组合,最多可以组合成16种码流。由软件出16个encoding pipeline来实现。
对于传输,用RTP协议。参考RFC6190: https://datatracker.ietf.org/doc/html/rfc6190#section-1.1.3
不同流用虚连接区分,NALU type上区分layers: dependency_id(DID) + temporal_id(TID) + quality_id(QID).
+---------------+---------------+---------------+
|0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R|I| PRID |N| DID | QID | TID |U|D|O| RR|
+---------------+---------------+---------------+
svcRtpSvr解析NALU packet。按dependency_id + temporal_id构建16个queue分别进行buffering。audio单独一个buffer。
为了缩短首帧加载时间,需要按dependency_id缓冲一个I-frame。
参考w3c标准(scalabilityMode表),对layers进行编码,共16个layer。
"S0T0", "S0T1", "S0T2", "S0T3" "S1T0", "S1T1", "S1T2", "S1T3"
"S2T0", "S2T1", "S2T2", "S2T3" "S3T0", "S3T1", "S3T2", "S3T3"
各个不同client的svcPlayer根据网络质量/buffering长度,自行决定要拉哪些layer,主动向svcMediaSvr发出请求。
比如,刚开始播放时,尝试获取3s标清base layer S0T2进行播放,播放流畅的话,就尝试获取S1T2进行叠加图像效果。3s播放仍然流畅,继续获取S2T2和S3T2进行高画质叠加。
player需要不断测试网络带宽,根据网络带宽的80%来计算应该在哪个layer上进行播放为佳。
相关文章:
基于libopenh264 codec的svc分层流实现方案
OpenH264 http://www.openh264.org/ 是标准的H.264 encoder/decoder. ffmpeg已经集成libopenh264,但不支持svc特性。 openh264 encoder支持svc特性: 1. 时域4层:Temporal scalability up to 4 layers in a dyadic hierarchy 2. 空域4层&#…...
为机器学习算法准备数据(Machine Learning 研习之八)
本文还是同样建立在前两篇的基础之上的! 属性组合实验 希望前面的部分能让您了解探索数据并获得洞察力的几种方法。您发现了一些数据怪癖,您可能希望在将数据提供给机器学习算法之前对其进行清理,并且发现了属性之间有趣的相关性,…...
基于Python OpenCV的金铲铲自动进游戏、D牌...
基于Python OpenCV的金铲铲自动进游戏、D牌... 1. 自动点击进入游戏1.1 环境准备1.2 功能实现2. 自动D牌3. 游戏结束自动退1. 自动点击进入游戏 PS: 本测试只用于交流学习OpenCV的相关知识,不能用于商业用途,后果自负。 1.1 环境准备 需要金铲铲在win10的模拟器,我们这里选…...
c++中httplib使用
httplib文件链接:百度网盘 请输入提取码 提取码:kgnq json解析库:百度网盘 请输入提取码 提取码:oug0 一、获取token 打开postman, 在body这个参数中点击raw,输入用户名和密码 然后需要获取到域名和地址。 c++代码如下: #include "httplib.h" #in…...
Vite 的基本原理,和 webpack 在开发阶段的比较
目录 1,webpack 的流程2,Vite 的流程简单编译 3,总结 主要对比开发阶段。 1,webpack 的流程 开发阶段大致流程:指定一个入口文件,对相关的模块(js css img 等)先进行打包࿰…...
[开源]免费开源MES系统/可视化数字大屏/自动排班系统
开源系统概述: 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、免费MES、免费智能制造系统、免费排产系统、免费排班系统、免费质检系统、免费生产计划系统。 万界星空开源MES制造执行系统的Java开源版本。开源mes系统包括系统管理…...
python如何使用gspread读取google在线excel数据?
一、背景 公司使用google在线excel管理测试用例,为了方便把手工测试用到的测试数据用来做自动化用例测试数据,所以就想使用python读取在线excel数据,通过数据驱动方式,完成自动化回归测试,提升手动复制,粘…...
线程同步——互斥量解锁、解锁
类似与进程间通信信号量的加锁解锁。 对互斥量进行加锁后,任何其他试图在此对互斥量加锁的线程都会被阻塞,直到当前线程释放该互斥锁。如果释放互斥锁时有多个线程被阻塞,所有在该互斥锁上的阻塞线程都会变成可运行状态,第一个变…...
数据结构(c语言版) 顺序表
代码 #include <stdio.h> #include <stdlib.h>typedef int E; //这里我们的元素类型就用int为例吧,先起个别名//定义结构体 struct List{E * array;int capacity; //数组的容量int size; };//给结构体指针起别名 typedef struct List * ArrayLis…...
Springboot 集成 RocketMq(入门)
1.RocketMq安装部署 Linux 安装 RocketMq-CSDN博客 2.添加依赖包 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.3</version> </dependency> 3.配…...
Elasticsearch:ES|QL 中的数据丰富
在之前的文章 “Elasticsearch:ES|QL 查询语言简介”,我有介绍 ES|QL 的 ENRICH 处理命令。ES|QL ENRICH 处理命令在查询时将来自一个或多个源索引的数据与 Elasticsearch 丰富索引中找到的字段值组合相结合。这个有点类似于关系数据库查询中所使用的 jo…...
【linux编程】linux文件IO高级I/O函数介绍和代码示例
Linux文件IO高级I/O函数用法是指如何使用这些函数来实现高效和灵活的文件读写操作,它们包括以下几类: 分散读和集中写:readv和writev函数可以一次性地从一个文件描述符读取或写入多个缓冲区,而不需要多次调用read或write函数。这样可以减少系统调用的开销,提高I/O效率。存…...
jQuery获取地址栏GET参数值
jQuery获取地址栏GET参数值 封装方法: window.location 是获取当前页面地址 // 获取地址栏参数 function GetUrlString(name){var reg new RegExp("(^|&)" name "([^&]*)(&|$)");var r window.location.search.substr(1).match…...
JAVA应用中线程池设置多少合适?
目录 1、机器配置: 2、核心线程数 3、最大线程数多少合适? 4、理论基础 5、测试验证 一个线程跑满一个核心的利用率 6个线程 12 个线程:所有核的cpu利用率都跑满 有io操作 6、计算公式 7、决定最大线程数的流程: 1、机器…...
.Net Core 3.1 解决数据大小限制
微软官网文档上对.NET Core3.1解决数据大小限制有详细的介绍。下面是根据自己的情况进行的总结,我们可以把.Core项目部署在IIS上,也可以利用Kestrel进行部署。这两种方式处理数据大小限制的方式不一样,具体如下: 一、部署在IIS上…...
【音视频 | opus】opus编码的Ogg封装文件详解
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...
【微信小程序】自定义组件(一)
自定义组件 组件的创建与引用1、创建组件2、引用组件3、全局引用VS局部引用4、组件和页面的区别 样式1、组件样式隔离2、组件样式隔离的注意点3、stylelsolation的可选值 数据、方法和属性1、data数据2、methods方法3、properties4、data和properties区别5、使用setData修改pr…...
如何通过一条数字人三维动画宣传片,打造出数字文旅
越来越多虚拟人,以文化挖掘者的身份通过数字人三维动画宣传片,打通次元壁,助力文化传播形式创造性转化、创新性表达,赋予文化发展新动能。 如南方都市报民间博物馆文化探寻者“岭梅香”,由一艘在南宋时期失事的沉船“南…...
【MongoDB】索引 - 数组字段的多键索引
数组字段创建索引时,MongoDB会为数组中的每个元素创建索引键(多键索引),多键索引支持数组字段的高效查询。 一、准备工作 这里准备一些数据 db.shop.insertMany([{_id: 1, name: "水果店1", fruits: ["apple&qu…...
2023.11.5 关于 Spring 创建 和 使用
目录 创建 Spring 项目 1.创建 Maven 项目 2.添加 Spring 依赖 将 Bean 对象存储到 Spring 容器中 创建 Bean 存储 Bean ApplicationContext 获取 Bean BeanFactory 获取 Bean ApplicationContext 和 BeanFactory 的区别 获取 Bean 的三种方式 根据 Bean id 获取…...
SDXL-Turbo创作分享:用实时绘画工具生成的精美作品案例
SDXL-Turbo创作分享:用实时绘画工具生成的精美作品案例 1. 引言:实时AI绘画的新纪元 想象一下这样的场景:你正在构思一个赛博朋克风格的城市景观,随着键盘的每一次敲击,眼前的画面实时变化,就像魔术师挥动…...
高质量建站引领数字化转型 ——2026 上海网站建设行业现状与标杆服务商盘点
2026年上海网站建设行业发展现状与高质量建站核心诉求据中国信通院《2026年中国GEO优化行业发展白皮书》、上海市商务委员会2026年一季度数据联合统计,上海企业数字化转型渗透率已达78%,国内GEO市场规模突破286亿元,年增长率125%;…...
一次 Spring 循环依赖源码走读:从三级缓存误用到 Bean 生命周期深度解析
在团队最近一次架构评审会上,关于 Spring 循环依赖的处理方式爆发了一场激烈争论。 “直接用 Lazy 不就行了?” 小李拍着桌子说,“我上个月在订单服务里就这么干的,上线一点问题没有。” “Lazy 只是绕开问题,不是解决…...
丹青识画系统AI编程辅助:基于代码理解的智能影像处理脚本生成
丹青识画系统AI编程辅助:基于代码理解的智能影像处理脚本生成 最近在折腾一些图像处理的小项目,经常需要写一些重复性的脚本,比如批量调整图片尺寸、识别特定物体轮廓、或者给图片加滤镜。每次都得翻文档、查API,虽然代码不复杂&…...
企业级微软产品激活管理:KMS_VL_ALL_AIO的技术实践与战略价值
企业级微软产品激活管理:KMS_VL_ALL_AIO的技术实践与战略价值 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 1. 企业激活困境与破局思路 核心价值:揭示企业在软件激活管…...
仲景GPT:首个中医大语言模型如何革新传统医学诊疗?[特殊字符]
仲景GPT:首个中医大语言模型如何革新传统医学诊疗?🚀 【免费下载链接】CMLM-ZhongJing 首个中医大语言模型——“仲景”。受古代中医学巨匠张仲景深邃智慧启迪,专为传统中医领域打造的预训练大语言模型。 The first-ever Traditio…...
SEO创始人有哪些著名的代表人物
SEO创始人有哪些著名的代表人物? 在互联网时代,搜索引擎优化(SEO)已经成为数字营销中不可或缺的一部分。无论是小型企业还是大型跨国公司,都在通过SEO提升网站在搜索引擎结果页面的排名,从而获得更多的流量…...
卡证检测模型自动化测试:Python脚本构建测试用例
卡证检测模型自动化测试:Python脚本构建测试用例 最近在部署一个卡证检测模型服务,上线前心里总有点不踏实。模型在开发环境跑得挺好,但真放到线上,面对各种五花八门的证件图片——光线暗的、角度歪的、背景杂乱的——它能扛得住…...
MOSFET栅极电阻选型实战:从波形分析到最佳阻值确定(附IRF540实测数据)
MOSFET栅极电阻选型实战:从波形分析到最佳阻值确定(附IRF540实测数据) 在电力电子设计中,MOSFET的栅极电阻选型往往被工程师视为"小问题",但实际调试中却可能成为影响系统稳定性的关键因素。记得去年参与一款…...
微信小程序对接实战:快速开发集成通义千问1.5-1.8B模型的AI聊天应用
微信小程序对接实战:快速开发集成通义千问1.5-1.8B模型的AI聊天应用 你是不是也想过,给自己的微信小程序加上一个智能聊天助手?比如,做一个能解答用户问题的客服机器人,或者一个能陪你闲聊、帮你写文案的创意伙伴。听…...
