网站首页 > 技术文章 正文
1.什么是Simulcast
Simulcast直译过来是多播的意思,其实就是一个客户端发送多条不同码率大小的流,为了达到这样的效果,客户端会对同一帧画面进行不同分辨率的编码来达到降低码率的目的。
视频发送端同时向服务端SFU发送多个不同分辨率的视频流(1080p、720p或360p)。SFU接收到这三个码流后,根据终端性能选择其中一个码流转发给终端。
例如PC2网络良好时,SFU向终端发送1080p视频流。网络不好时,可以发送720p的视频流。Simulcast模式对于移动终端类型非常有用。可以灵活智能地适应不同的网络环境。
但是Simulcast也有一定的缺陷,虽然Simulcast可以解决下行带宽不足时降码率的需求,但是在应用的过程中存在比较致命的缺陷:
A.上行带宽的增加,我们在上行时会多发送多条流,导致大量的带宽浪费。而为了应对几个下行网络较差的用户而牺牲上行用户的带宽资源,这样的做法有待商榷;
B.下行可供的流选择性很少,及时使用3条流同时传输的方式,在移动网络这样复杂多变的网络条件下,上下调整的幅度将会是巨大的,会造成不好的用户体验,相比SVC适用性较差。
2.什么是SVC
可伸缩视频编码SVC(Scalable Video Coding)是一种可扩展的视频编码模式,是H.264标准的一个扩展,最初由JVT在2004年开始制定。H.264 SVC是H.264标准的扩展部分,SVC扩展部分引入了一种传统H.264 AVC不存在的概念——编码流中的层。基本层编码最低层的时域、空域和质量流;增强层以基本层作为起始点,对附加信息进行,从而在解码过程中重构更高层的质量、分辨率和时域层。通过解码基本层和相邻增强层,解码器能生成特定层的视频流。与 Simulcast 模式下同时传输多个流不同,SVC 模式侧重于视频编码。
SVC 在视频编码过程中将视频分为多个层(核心层、中间层和扩展层)。上层依赖于下层。上层越高,视频越清晰,视频越低,视频越模糊。
在带宽较差的情况下,只能传输底层(核心层)。如果带宽足够,则可以将所有数据传输到终端。
SVC优势:
- 时域可分级:(Temporal scalability):可以从码流中提出具有不同帧频的码流。
- 空间可分级:(Spatial scalability):可以从码流中提出具有不同图像尺寸的码流。
3.在anyRTC云平台中如何应用
anyRTC云平台中原生支持Simulcast,通过可拓展编码方式可实现SVC的编码传输;用户可以根据自己的需求进行选择。同时anyRTC云平台提供的是传输服务,用户只需要关心端到端的情况。anyRTC云平台提供的传输网络包括:
A.分区域/分运营商部署RTC服务器,用户通过接入服务实现就近接入,保障了最后一公里的质量。
B.灵活/按需部署路由节点,通过路由分配服务,能够根据实时网络质量选择最优的传输路径。
C.分布式的RTC节点更有利于通讯方数的扩展和服务扩容;同时支持公/私混合云的部署方式。
D.需要保障数据传输质量,可以尝试RAST协议库。
4.概括
猜你喜欢
- 2024-11-10 VMware中ESXI常用命令(vmware esxi使用教程)
- 2024-11-10 arm嵌入式考试题,大神精心总结(arm嵌入式知识点)
- 2024-11-10 ARM汇编教程(3): ARM指令集(arm汇编指令的基本格式)
- 2024-11-10 Cortex-A的通用寄存器和程序状态寄存器
- 2024-11-10 基于istio的mirror构建真实流量测试环境
- 2024-11-10 领先业界,中兴通讯首发两款双路4K超高清视讯终端
- 2024-11-10 arm 汇编指令 CPS(arm汇编器)
- 2024-11-10 Linux-2.6.37版:Linux内核启动全过程详解
- 2024-11-10 协处理器指令_开启ICache代码示例
- 2024-11-10 ADC触摸屏编程_定时器程序优化(触摸屏如何修改plc里时间定时值)
- 最近发表
-
- 使用Knative部署基于Spring Native的微服务
- 阿里p7大佬首次分享Spring Cloud学习笔记,带你从0搭建微服务
- ElasticSearch进阶篇之搞定在SpringBoot项目中的实战应用
- SpringCloud微服务架构实战:类目管理微服务开发
- SpringBoot+SpringCloud题目整理
- 《github精选系列》——SpringBoot 全家桶
- Springboot2.0学习2 超详细创建restful服务步骤
- SpringCloud系列:多模块聚合工程基本环境搭建「1」
- Spring Cloud Consul快速入门Demo
- Spring Cloud Contract快速入门Demo
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)