技术分享| anyRTC音视频混流技术解析

一,简介

在视频通讯场景中,比如会议、直播等经常能看到图像合成的场景。图像合成是在指定的一块画面区域,在这个区域内,按画面的位置(坐标)布局,将区域中的每个视频画面的像素混合计算成一个像素(RGB)。比如以下是anyRTC的H323合成画面:

二,图像合成

如图所示,一幅图像或画面是由很多图层叠加而成的,而图层通常分为背景层和叠加层,基于图层可以叠加成需要的画面布局。在计算机上一幅图像的显示大多数是以RGB的颜色标准,对于图像的合成本质上是在每个像素上进行RGB颜色值进行叠加。

背景图层就是通常意义上的画布,他限定了画面合成的范围区域,在背景图层分辨率范围之外的图像画面是不能被合成的,通常会使用纯色画布来充当背景图层,当然也可以使用图像作为背景填充。

叠加图层顾名思义就是在背景图层上进行画面叠加,每一个叠加图层都会根据设定的位置参数叠加到在背景图层之上一块对应区域。从原理上来说,叠加图层作单独来看,其也是由背景图层和叠加图层组合而成。混流区域内的RGB像素颜色值,是根据其位置上所有图层(包括背景图层和叠加图层)对应的颜色值,按规则计算出来。

在对图像进行合成之前,需要先将图层的布局合理安排,以免出现图层遮挡、位置偏移、超出背景范围、色值偏差等问题。

三,音频合成

音频合成又称混音,就是把多路音频源混合在一起,基本原理是将多个音频源的波形按一定的算法进行叠加计算,混合成一路音频波形。我们知道在计算机中所有的音频数据都是数字采样,但是音频叠加的算法是非线性的,不能简单地对波形数据的值进行加减。

通常在混音时,需要先对音频输入源统一采样率(SampleHz)、位宽(BytesPerSample)、声道(Channels)等参数,然后再对PCM波进行混合,混合的方式一般有以下几种:

现在随着AI技术的不断发展,使用AI来做音频合成的越来越多,使用AI来做音频合成的优点就是,AI会提取学习音频的数据特征,比如人声,AI可以将人的声音重要特征提取出来,在合成时可以保证不失真,并且摒除一些噪声,这样合成出来的声音保真度就非常好。

如下是常用的音频混音的流程图:

四,总结

音视频合成技术应用的场景非常多,实现的方案也非常多,比如常用的FFMpeg就对音视频合成支持的非常好,可以轻松使用一个FFMpeg命令行,就是实现2个甚至多个视频文件的合成工作。anyRTC使用的音视频合成技术是在通信过程中,所以对实时性要求比较高,anyRTC同时会根据业务场景以及用户的需求,选择不同的策略来实现不同场景下的音视频合成的需求。

相关推荐
feiyangqingyun26 分钟前
Qt音视频开发技巧/推流带旋转角度/rtsprtmp推流/保存文件到MP4/拉流解析旋转角度
qt·音视频·qt旋转角度推流
Despacito0o1 小时前
ESP32-s3摄像头驱动开发实战:从零搭建实时图像显示系统
人工智能·驱动开发·嵌入式硬件·音视频·嵌入式实时数据库
毕设做完了吗?10 天前
视频相似度检测算法(带课设报告)
人工智能·算法·机器学习·音视频
语音之家10 天前
2025年CCF先进音频技术竞赛
人工智能·音视频
音视频牛哥10 天前
音视频全链路开发实践:基于SmartMediakit的架构设计与应用实战
音视频·大牛直播sdk·rtsp播放器·rtmp播放器·安卓rtmp播放器·rtmpplayer·linux rtsp
十年编程老舅11 天前
音视频流媒体高级开发-学习路线
ffmpeg·音视频·音视频开发·音视频编解码·c++音视频·流媒体服务器·音视频学习路线
weisian15111 天前
一款强大的音视频处理工具--FFmpeg-2--常用音频处理示例
音视频·mpeg-2
9527华安11 天前
国产安路FPGA实现MIPI视频解码转HDMI输出,基于SC500摄像头,提供TD工程源码和技术支持
fpga开发·音视频·csi·mipi·dphy·安路fpga·sc500
niech_cn11 天前
微信小程序扫码添加音频播放报错{errCode:10001, errMsg:“errCode:602,err:error,not found param“}
微信小程序·小程序·音视频
扫地僧98511 天前
免费1000套编程教学视频资料视频(涉及Java、python、C C++、R语言、PHP C# HTML GO)
java·c++·音视频