连麦互动直播中混屏技术设计

                                连麦互动直播中混屏技术设计

目录

一. 混屏原理

二. 实现混屏关键技术

1. 并发解码

2. 图像合成

3. 视频同步

4. 编码输出

5. 内存管理

三. 具体实现流程

1、混屏流程

2、混屏算法

四. 音视频同步

五. 总结

参考文献:



本内容全原创,因作者才疏学浅,偶有纰漏,望不吝指出。本内容由灵声讯音频-语音算法实验室整理创作,转载和使用请与“灵声讯”联系,联系方式:音频/识别/合成算法QQ群(696554058)


一. 混屏原理

根据当前混屏或图像合成的研究成果,以及对市场上成型的混屏产品的分析,采用基于视频帧合成的实时流混屏方案。该方案需用高度并发解码方式,对RTPP双线交互的两路视频流进行实时解码成为视频帧序列;并通过将两个视频帧中的YUV图像合成,生成新视频帧,再对新视频帧进行编码,按要求输出目标格式的实时视频流。该方案的系统架构如图1所示:

                                   

                                                                   图1 实时混屏系统框图

解码模块包括两个解码器,一个解码器负责对一个实时视频流进行解码,获得数据帧后,由预处理模块对视频帧进行以下处理。

首先,根据目标输出视频的像素比例,计算该视频画面在目标画面所占的实际大小,对视频帧进行缩放操作,在此缩放视频帧,可以减少后续处理的数据量,而不影响转换后的视频质量。然后,检查图像的色彩空间格式,如果不是YUV格式,统一为YUV格式。最后,将处理好的视频帧从队列尾部加入到待处理的视频帧队列中。

视频合成模块,访问各个编码器输出的待处理的视频帧队列,从队列头部取出视频帧,进行合并。在合并过程中,为保证视频同步,以其中一个视频流为基准,对其他视频流的数据帧采用插帧或丢弃,保证所有数据帧的时间戳一致。解码模块和视频合成模块对视频帧队列分别进行处理,解码模块输出数据帧插入到队列尾,而视频合成模块从视频帧队列头开始处理,将解码和编码的耦合度降到最低,解码与编码可以同时进行。

编码器对视频合成模块输出的视频帧序列进行编码,转换生成混屏后的实时视频流。

二. 实现混屏关键技术

1. 并发解码

实时视频流混屏处理多路实时视频流输入,并输出实时视频流。解码处理的数据量大,实时性要求高,对服务器的解码能力提出很高要求。高度并发解码,充分利用多核CPU计算能力是实现实时视频流混屏的关键。为提高并发度,并发解码至少包括两级并发,一级是两个实时流解码器的并发解码,二级是解码器Frame级别的并发解码。

两个解码器分别对不同的视频源进行处理,并将分别独立输出数据帧,以队列的方式保存,供后续模块调用。解码器之间相互独立,不存在制约关系,可并发处理,提高CPU利用率。解码器Frame级别的并发,解码器采用线程池方式进行解码。在解码器初始化时,根据服务器CPU核数,初始化相应数目的解码线程。解码线程接收输入数据,并对数据进行解码。外部程序通过解码器提供的调用入口,进入解码器的主线程。

2. 图像合成

将两个视频混屏,可通过图像合成的方式,将两个实时流的数据帧图像合成新图像,将合成后的视频帧作为输入进行编码得到实时视频流输出。两个数据帧的图像合成必须采用统一的图像格式。图像数据在存储中的存储格式主要包括RGB和YUV。YUV格式所需存储空间比RGB格式存储空间小,因此YUV格式主要用于多媒体数据传输。高清实时视频流多采用H.264编码方式,其采用的色彩空间是YUV。在合成过程中,如发现视频源的图像采用RGB方式,则需要将其转换成YUV才可合成。

RGB图像和YUV图像可相互转换,从RGB到YUV的转换公式见公式(1)。

                              Y=0.30R+0.59G+0.11B

                              U=0.493(B-Y)                                                                                                             (1)

                             V=0.877(R-Y)

另外,YUV格式也存在多种不同的采样比。在实际应用中,为减少运算量,可选择使用视频源中最普遍使用的格式,而将其他格式的图像进行转换,形成统一格式。

将两个YUV图像合成一个YUV图像,可根据各个图像排列的位置,对图像的三个分量重新进行排列组合成新图像。以Planar格式为例,将两个YUV图像合成一个YUV图像,可将YUV三个通道各自分开处理,对每个通道的分量,按照每行分量的位置从左到右排列,各行从上到下排列。

3. 视频同步

图像合成组成新的视频需解决两路视频间的同步问题。由于两路高清视频流的来源不一致,解码后获得包含图像的数据帧的帧率不一致,为确保合成后视频的质量,必须将多路视频的输出图像进行同步处理。同步方法如下。

选取一个实时视频流的输出数据帧作为基准序列,在单位时间内,对其他实时视频流解码后获得的数据帧序列,通过插帧或丢弃的方式,将视频帧的个数与基准源保持一致,以基准序列的时间戳作为合成后数据帧序列的时间戳。为提高视频质量,在对数据帧进行插帧或丢弃时,可根据对视频对象做真实运动的估值结果进行处理。

4. 编码输出

将合并后的数据帧序列作为原始数据,输入到编码器中。编码器根据目标输出设置的参数,生成实时流,将实时流推到流媒体服务器中。客户端只需要访问CDN服务器即可播放合成后的视频。图像合成只考虑视频处理。

5. 内存管理

数据帧的内存管理机制对数据帧提供创建、销毁、引用、撤销引用、引用迁移等操作,并增加数据区的引用计数器。在引用、撤销引用、引用迁移时,不重新申请数据区,而是建立、修改或撤销对数据区的引用关系,保持数据区指针在数据帧对象中,并修改数据区的引用计数器。当数据帧Buffer被创建时,计数初始化为1。当该Buffer被数据帧引用时,计数+1,当数据帧撤销引用时,计数-1。

每数据帧撤销引用时,检查计数器数值,只有当发现计数器被清零时,才释放该数据区。通过采用引用计数器的机制,有效防止内存泄露,并大大减少重复的内存申请和数据复制操作,提高处理性能。

三. 具体实现流程

1、混屏流程

                              

⑴ 线程1和2相同流程是取得解码完的数据。

⑵ 不做帧内存管理,即时混屏。

⑶虚线左边为上层,右边为下层。

2、混屏算法

                                        

                                          

⑴ 缩放为按比例进行下采样得到。

                               

⑵ 混屏为对内存数据改写。

                        

其中, LAST_WIDTH 为360,LAST_HEIGHT为480,target_width为LAST_WIDTH/3,target_height为LAST_HEIGHT/3;

四. 音视频同步

音视频同步是实时流媒体互动最基本的需求。从技术上来说,解决音视频同步问题的最佳方案就是时间戳:首先选择一个参考时钟(要求参考时钟上的时间是线性递增的);生成数据流时依据参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间);在播放时,读取数据块上的时间戳,同时参考当前参考时钟上的时间来安排播放(如果数据块的开始时间大于当前参考时钟上的时间,则不急于播放该数据块,直到参考时钟达到数据块的开始时间;如果数据块的开始时间小于当前参考时钟上的时间,则“尽快”播放这块数据或者索性将这块数据“丢弃”,以使播放进度追上参考时钟)。

可见,避免音视频不同步现象有两个关键:一是在生成数据流时要打上正确的时间戳。如果数据块上打的时间戳本身就有问题,那么播放时再怎么调整也于事无补。假如,视频流内容是从0s开始的,假设10s时有人开始说话,要求配上音频流,那么音频流的起始时间应该是10s,如果时间戳从0s或其它时间开始打,则这个混合的音视频流在时间同步上本身就出了问题。打时间戳时,视频流和音频流都是参考参考时钟的时间,而数据流之间不会发生参考关系;也就是说,视频流和音频流是通过一个中立的第三方(也就是参考时钟)来实现同步的。二是在播放时基于时间戳对数据流的控制,也就是对数据块早到或晚到采取不同的处理方法。

五. 总结

以上基于视频帧合成的实时流视频混屏的方法,两个解码器间互不干扰,为高度并发解码提供可能;并采用视频帧队列管理的方式,使得解码和编码的耦合降到最低,解码与编码可以同时进行。高度并发使服务器的多核CPU运算能力得到充分利用,仅依靠软件解码的方式就能实现两个高清视频的混屏。混屏处理后,以实时视频流的方式输出,客户端只需接收视频流进行播放即可,对客户端的配置要求低。

参考文献:

[1] 黄东君,陈松乔.基于源根组播的多点视频会议系统模型及其实现.电子学报,2005(1).

[2] 刘峰.视频图像编码技术及国际标准.北京邮电大学出版社,2005(7).

[3] 肖永豪,余英林.基于视频对象的自适应去帧/插帧视频处理.华南理工大学学报(自然科学版),2003(8).

[4] 刘晓玲,张涛. 基于帧图像合成的实时视频混屏关键技术研究.电信技术,2014(4).



本内容由灵声讯音频-语音算法实验室整理,转载和使用请与“灵声讯”联系,联系方式:音频/识别/合成算法QQ群(696554058)



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/48739.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

干货 | 奇秀直播连麦技术探索

前言 2020上半年,直播再次成为中文互联网世界的新风口,甚至到了无达人不直播,无名人不带货的地步;从2016年直播元年开始,直播的内容越来越多元,从秀场直播,游戏直播,到短视频直播普济…

视频直播时连麦功能使用说明

保利威视连麦系统 支持老师、助教、观众之间进行互动。音频支持4人互动、视频支持2人互动。 下面以老师和学生进行连麦时,各种状态下,老师端与学生端各自界面显示内容为例子进行讲解。 连麦功能位置 老师直播客户端,连麦功能的开启位置。…

直播连麦技术闭坑篇

直播音质如何改善 1、在使用 anyRTC SDK 进行直播的时候,SDK 默认是打开 AEC (回声消除)功能的,该功能对音质有一定的损耗,所以在开播之前建议先关闭该功能,当跟其他人建立起直播连麦后在打开该功能&#…

OBS直播如何连麦和多人连麦

OBS如何支持直播多人连麦和BGM?比如SRS 4.0的多人连麦、多平台直播、多场景切换的在线发布会方案如何实现的? 废话不多说,直接上干货。我录制了3分钟的视频教程,使用起来很简单,3分钟就讲清楚了: OBS-001-…

srs 直播连麦环境搭建

一、简介 二、修改conf/rtc.conf 三、两个客户端加入房间 四、合流 4.1分别拉流尝试 4.2合流推流 4.3拉取合流 一、简介 直播连麦是指在one2one或one2many进行音视频通话,此时把他们的音视频流合在一起,通过rtmp等协议推送给大量用户做直播。 因此首选需…

《算法新解》作者刘新宇:我只是想打开那些黑盒子,告诉人们里面有什么。

本文章仅用于学习和交流目的,不得用于商业转载。非商业转载请保留原作者、译者、原始链接地址:http://www.ituring.com.cn/article/274001 访谈嘉宾: 刘新宇,于1999年和2001年分别获得清华大学自动化系学士和硕士学位,之后长期从事软件研发工作。他关注基本算法和数据结构…

王峰五小时对话冯波:如果今天没有区块链,你会做什么?

“看完我们之间的对话,你会更能理解,原来做区块链才是Peter Thiel讲的从零到一。” 文 | 王峰 出品 | 火星财经APP(ID:hxcj24h) 有人问我,“王峰十问”和那么多业界精英做过对话,怎么不和冯波也…

2020 CES“高尖精”机器人回顾!

来源 | 机器人在线 原创 | 养乐多 2020 CES(国际消费类电子产品展览会)于美国时间1月7日到1月9日在美国拉斯维加斯会展中心盛大举行,2020年全新科技行业的趋势在这里开启。 拉斯维加斯会展中心展览面积为275万平方英尺(约25.5万…

小爱音箱 电脑 麦克风_开箱,小米小爱音箱万能遥控版,这样的操作你知道吗?...

小爱音箱万能遥控版采用白色的包装盒,正面是音箱的图片,支持QQ音乐库,海量优质有声内容,600家的使用技能,支持WiFi,蓝牙和红外,可以语音遥控家电。 包装盒的侧面,还印有小米小爱音箱万能遥控版的产品信息,产品型号为LX05A,采用蓝牙4.1,支持A2DP音乐播放,采用Micro …

小米小爱团队负责人王刚:语音交互背后,有多少人工就有多少智能

整理 | Just,阿司匹林 出品 | AI科技大本营(公众号ID:rgznai100) 【导语】近日,在英特尔与 O’Reilly 联合主办的中国人工智能大会上,小米的小爱团队负责人王刚分享了他们在语音交互技术上的进展以及面临…

挑战真实场景对话——小爱同学背后关键技术深度解析

本文来自 PaperWeekly 和 biendata 组织的企业 AI 技术实战讲座。作者为小米人工智能部的崔世起,崔老师以著名的“小爱同学”为实例,详细介绍了全双工关键技术及其应用。 本文主要分为四部分: 什么是全双工连续对话,针对全双工交互…

非小米手机接入小爱同学,Blinker智能家居

想实现小爱同学语音控制RGB灯 下载 1、米家 2、小爱同学 3、blinker点灯科技 米家同步设备 右上角添加,找到点灯科技 下面点击同步设备,就可以把blinker新建的设备同步过来啦 小爱同学指令训练 以此类推,添加其他的指令就可以了 然后就可…

chatgpt赋能python:用Python实现文本数字转换:从123到一二三

用Python实现文本数字转换:从123到一二三 在网站开发中,我们经常需要将数字转换成文字,比如将123转成“一百二十三”。这种数字转文字的需求,既方便了用户的阅读,也提高了网站的可读性和SEO效果。 在本文中&#xff…

元宇宙之NFT行业分析:中国数字藏品行业有望走向规范化、差异化

​潜力博主推荐,点上面关注博主↑↑↑ 一、中国数字藏品行业生态演进:合规化,差异化 (一)中办国办定调鼓励文化数字创新业务,行业形成自律规范 数字藏品作为新兴产业,在我国尚未搭建由上至下…

【历史上的今天】2 月 20 日:Python 代码首次发布;Facebook 收购 WhatsApp;DEC 创始人出生

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 2 月 20 日,在历史上的今天,吉多范罗苏姆正式对外公布 Python 代码,版本为 0.9.0。当前,Python 稳定版为 3.10.…

chatgpt赋能python:Python中数字转换的完整指南

Python中数字转换的完整指南 转换数字是Python编程过程中经常需要的操作之一。Python提供了许多内置函数和库,可以方便地将数字转换为各种格式和数据类型。在本文中,我们将介绍Python中数字转换的完整指南,包括各种转换方法和最佳实践。 内…

全新NFT合成功能

为了满足广大用户的需求,UTON NFR平台在今天(2月25日)10:00、14:00、20:00,分别发行了500份【滑雪】数字藏品、1000份【冰球】数字藏品和1000份【冰壶】数字藏品,所有藏品上线不到1分…

实现数字永生还有多久?元宇宙全息真人分身#8i

你们都有哪些元宇宙分身? # # 直播滤镜、数字人虚拟形象、真实人像3D重建...... 我觉得这些还不够元宇宙,8i 推出了元宇宙全息分身,支持真实人物全息重建,并可导入多平台通用。 小杜 何为元宇宙全息分身?简单来说&…

惊!没想到NFT图片合成如此简单。

一、制作背景 当前NFT作品制作的大多方式都是使用部件拼接的形式,然后从大量的可能性结果取优; 二、解决问题 拼接合成的组合数量十分巨大,手工合成费时费力; 合成中对各个部件的使用次数不容易控制,部位出现的概率对作…

PHP美团外卖开放平台开发记录,IM在线通讯token获取和消息解密!By勤勤学长

token获取: 一开始我还以为,监听哪个店铺的消息,就用哪个店铺的appAuthToken获取长链接的token,但实际上,不管是使用哪个店铺的appAuthToken返回的内容是一样的,同时也意味着,我们可以获取所有…