随着科学技术的不断发展,音视频技术更是突飞猛进,与我们的日常生活已经不可分割,从游戏场景的语音沟通、电商场景的直播连麦、到教育场景到授课答题,以及金融场景的银行视频开户等都有它的身影。
那么音视频技术究竟是什么?
音视频技术其实就是音频技术和视频技术的一个统称,在技术处理上,其实音频和视频是要分开处理的。而且要注意一点,音视频从开始收集数据到最后展示都是离不开硬件设备的,也就是说,在做音视频开发时,就得做好和硬件打交道的准备。
音视频的开发流程主要分为采集、预处理、编码、解码、渲染与展示、文件封装/解封装、网络协议打包等七大步骤。
01 音视频采集
音视频采集很好理解,就是将使用者的声音和视频收集起来,如从客户端的麦克风、摄像头,以及本地文件中,获取到基础的音视频数据。
其原始数据格式也是分为音频(PCM)和视频(YUV、RGB)两大部分。
音频(PCM)主要是通过采样,量化,编码三个步骤来实现的。
基本定义:模拟信号是指随时间连续变化的物理量,将声音在磁带上记录成磁场强度的变化或在黑胶唱片上记录成沟槽大小的变化就是以模拟方式进行存储。数字信号则是离散的,计算机中的数据都是以数字方式存储的。模拟信号和数字信号可以相互转换。
脉冲编码调制(Pulse Code Modulation, PCM)是一种模拟信号的数字化方法。它是最常用、最简单的波形编码方式,但是也存在其它方法,比如脉冲密度调制(Pulse Density Modulation, PDM)。
视频(RGB):常见的颜色空间有两种,分别是以红、绿、蓝三原⾊的亮度来定量表示颜⾊的 RGB 模式。
视频(YUV):根据⼀个亮度(Y 分量)和两个⾊度(UV 分量)来定义颜⾊空间的 YUV 模式。
因为人眼对色度的敏感度不如对明亮度,可以对色度的数据进行压缩,因此 YUV 格式比 RGB 格式存储空间更小。目前音视频技术多采用 YUV 模式进行采集,以便获取更大的可压缩空间。
本文福利, 免费领取C++音视频学习资料包+学习路线大纲、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,编解码,推拉流,srs),有需要的可以进企鹅裙927239107领取哦~
02 音视频预处理
音视频预处理就是将采集到的音视频数据通过美颜、裁剪、AI 识别处理、声音 A3 等技术手段先进行一个简单的处理。
因为收集到的原始数据,不一定是想要在最后呈现的效果。
03 音视频编码
音视频编码是指在经过预处理或者没处理过的原始文件,一般都会比较大,不适合进行传输,这个时候就需要进行压缩、转码之类的操作,减少文件提交,然后再进行传输,执行编码的工具叫编码器,压缩数据的算法叫做编码格式。
音频的编码格式主要分 G7xx 系列、MP3、AAC、Opus 四种。
01.G7xx 系列:是一组 ITU-T 标准,用于音频压缩和解压缩。它主要用于电话方面。在电话技术中,有两个主要的算法标准,分别定义在 mu-law 算法(美国使用)和 a-law 算法(欧洲及世界其他国家使用)中。两者都是基于对数关系的,但对于计算机的处理来说,后者更为简单。
G.7xx 协议组由以下协议组成:
G.711 ―― 64 kbps 信道上的语音频率脉冲编码调制(PCM);
G.721 ―― 32 kbit/s 自适应差分脉冲编码调制(ADPCM);
G.722 ―― 64 kbit/s 下的 7 kHz 音频编码;
G.722.1 ――带有低帧损耗的具有免提操作的系统在 24 kbit/s 和 32 kbit/s 上的编码;
G.722.2 ――利用自适应多频率宽带(AMR-WB)以 16 kbit/s 多频率语音编码;
G.726 ―― 40、32、24、16 kbit/s 自适应差分脉冲编码调制 ADPCM;
G.727 ―― 5-、4-、 3-和 2-bit/s 嵌入式自适应差分脉冲编码调制 ADPCM;
G.728 ――利用低延迟代码线性预测以 16 bit/s 进行语音编码;
G.729 ――利用共扼结构-代数激励编码线性预测(CS-ACELP)以 8 bit/s 进行语音编码。
02.MP3:mp3 的文件是音频文件的数字编码文件格式,正式基于 MPEG-1 音频层 III 或 MPEG-2 音频层 III。它由使用第 3 层音频压缩的运动图像专家组 (MPEG) 开发。
MP3 文件格式实现的压缩是 .WAV 或 .AIF 文件大小的 1/10。该格式提供了通过 Internet 流式传输此类音频文件以在线收听的优势,这在以前是不可能的,因为音频文件的文件大小很大。MP3 音频文件的音质可以通过比特率、采样率、联合或普通立体声等参数设置来控制。
03.AAC:全称 Advanced Audio Coding,是一种专为声音数据设计的文件压缩格式。与 MP3 不同,它采用了全新的算法进行编码,更加高效,具有更高的“性价比”。利用 AAC 格式,可使人感觉声音质量没有明显降低的前提下,更加小巧。苹果手机是首先都支持 AAC 格式的音频文件的。
AAC 格式优势:
a.高效的压缩率:可以以更小的文件大小获得更高的音质;
b.支持多声道:可提供最多 48 个全音域声道;
c.更高的解析度:最高支持 96KHz 的采样频率;
d.提升的解码效率:解码播放所占的资源更少;
03.Opus:音频编码是将原始的音频采样数据,通过某种算法将其压缩编码成规定格式的二进制码流,从而方便存储和传输。Opus 就是由 Xiph.Org 基金会发明的一种音频编码格式。
该编码格式应用了两种技术:一个是线性预测(Linear Prediction,LP),另一个是改进的离散余弦变换(Modified Discrete Cosine Transform,MDCT)。线性预测技术在低频信号的编码上更加高效,适合处理语音数据。对于包含高频信号的音乐,改进的离散余弦变换这种域变换技术处理效率更高。
视频编码格式主要分为 ISO-MPEG/ITU-T、AOM、China AVS 这三种。
01.ISO-MPEG/ITU-T:
a.ITU-T 的中文名称是国际电信联盟远程通信标准化组织(ITU-T for ITU Telecommunication Standardization Sector), 它是国际电信联盟管理下的专门制定远程通信相关国际标准的组织。
ITU-T 下属的第 16 研究组( ITU-T Study Group 16),又称为 VCEG(Video Coding Experts Group )。它制定的标准有 H.261、H.263、H.263+等,对于目前流行最广的,影响也是最大的 H.264 和 H.265 也有部分贡献。
b.ISO/IEC(MPEG)国际标准化组织(ISO)是由各国标准化团体(ISO 成员团体)组成的世界性的联合会,负责各种标准的制定。
ISO/IEC 下属的 ISO/IEC JTC 1 SC 29 / WG 11 组织,又称为 MPEG(Moving Picture Experts Group)。它制定的关于视频编码方面标准有 MPEG-1、MPEG-2、MPEG-4 等。并且已经制定出来了最新的 MPEG-7,并且计划公布 MPEG-21。
02.AOM(AOMedia):是一个非盈利的中立跨行业的开源联盟(非盈利的中立组织),这个联盟由半导体企业、视频点播供应商和网页浏览器开发商于 2015 年成立。
AV1(Alliance for Open Media Video 1)是由 AOM(Alliance for Open Media,开放媒体联盟)制定的一个开源、免版权费的视频编码格式,目标是解决 H265 昂贵的专利费用和复杂的专利授权问题并成为新一代领先的免版权费的编码标准。
此外,AV1 是 google 制定的 VP9 标准的继任者,也是 H265 强有力的竞争者。
03.AVS:即 Audio Video coding Standard ,音视频编码标准,由我国的数字音视频编解码技术标准工作组负责开发制定。
工作组制定的 AVS1 、 AVS2 两代编码,已分别于 2006 年和 2016 年被颁布为国家标准。目前 AVS 标准广泛应用于我国的广播电视领域,正在进军互联网视频领域和监控领域。2019 年 3 月,数字音视频编解码技术标准工作组完成了 AVS3 基准档草案,性能超过 AVS2 编码 30%左右。
工作中经常遇到的就是 MPEG-2/H.264/AVS+这三类编码,也是在传统视频领域应用的最多的几类。MPEG-2 多用于用户的标清收看;H.264 多用于用户的高清视频收看,尤其在互联网视频领域,H.26x 系列是毋庸置疑的王者;AVS+系列主要在卫星上传输视频。
04 音视频解码
音视频解码就是就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。
用来解码的工具就是解码器了,不过通常编码器和解码器是一块的,统称为编解码器 codec。
常用的编解码工具主要有 Ffmpeg、CodecVisa、H264BSAnalyzer、AACAudioESViewer、Elecard StreamEye Tools 等四种。
05 音视频渲染与展示
接收到原始数据文件之后,就可以通过硬件或者软件进行渲染与展示了,硬件例如显示器、音响等,软件有 SurfaceView。
06 音视频文件封装/解封装
其实从采集,音频和视频都是分开进行处理的,但是在进行传输的时候,我们需要同一套音频文件是在一块的,所以需要进行一次文件封装。存放音视频的容器叫封装容器,文件类型叫封装格式。
常用的封装分析工具有 FlvParse、Mp4Explorer、Mp4info、Mediainfo、ffprobe、MP4Reader 等六种。
07 音视频网络协议打包
音视频文件在网络中传输的时候,一般都会有一个特定的协议,也就是流媒体协议。网络协议会将音视频数据文件打包成协议包,通过网络协议端口发送出去,接收方接收到网络包之后,要通过网络协议解开协议包,才能获得音视频数据文件。
常用的工具有 OBS、OnlyStopWatch 以及弱网模拟(clumsy、Nstwork Emulator Toolkit)和抓包(Wireshark、TcpDump)等四类。
实时音视频应用是一种强交互应用,以协调办公为例,用户的体验会严重影响办公效率和质量。要想提供优质交互的办公体验,实时音视频需克服以下技术难点:
1.网络基础设施:需要同时满足画质清晰流畅不卡顿、低时延、实时互动等需求。而今天网络情况复杂,弱网、跨运营商、跨国都导致链路质量和传输延时不可控;
2.高清晰度:对数据传输、客户端的数据采集及数据渲染有较高技术要求;
3.高音质:对音视频的降噪和消除回声有极高要求;
4.国内外网互通:国内外连线,各地区信号差异大,如有的地方是 5G,有时还是 2G 信号,对实时音视频技术极大的挑战;
5.音画同步:对在线教育,除音画同步外,还涉及课件和白板以及交互操作的同步;
6.海量并发:用户量多,对网络稳定,服务器不宕机能力提出挑战;
7.低端设备适配:硬件越来越复杂,进入的场景也越多,低端设备的适配是比较难。
其实以上技术难点,在 X2Rtc 中都已经得到了完美的解决,它基于 WebRTC 技术堆栈拓展 GB/T28181 协议以及其他通信协议,支持 RTSP、RTMP、 WebRTC、H.323、SlP、HTTP_FLV、SRT 等。
此外,X2Rtc 是一个开源的流媒体服务平台,开发者可以通过 X2RTC 的 SDK/Restful API 快速集成到自己的业务中,并通过支持插件改进他们的应用场景。