在当今数字化的多媒体世界中,音视频技术无处不在,从我们日常的娱乐消遣到专业的影视制作、远程通信等领域,都离不开音视频的支撑。本文将带您了解音视频的基础知识,为您揭开这一神秘领域的面纱。
我们以视频通话为例,看看其中涉及了哪些知识。
1. 采集
音视频采集是指通过特定的设备和技术,将现实世界中的声音和图像转换为数字信号,并记录下来的过程。采集得到的数据一般为音视频的原始格式。
1.1 音频采集
1.1.1 声音的本质和特性
声音是由物体振动产生的机械波,通过介质传播到我们的耳朵,引起听觉神经的反应。声音具有三个主要特性:频率、振幅和音色。
频率决定了声音的音高,单位是赫兹(Hz)。人类能够听到的声音频率范围大约在 20Hz 到 20000Hz 之间,低于 20Hz 的称为次声波,高于 20000Hz 的称为超声波。
振幅则影响声音的响度,也就是音量的大小。振幅越大,声音越响亮。
音色是声音的特色,它取决于发声物体的材质、形状和结构等因素。例如,钢琴和吉他弹奏同一个音符,我们能够轻易分辨出来,这就是因为它们具有不同的音色。
1.1.2 音频的数字化
要让计算机处理和存储声音,就需要将模拟的声音信号转换为数字信号,这个过程称为音频数字化。
采样是按照一定的时间间隔对声音信号进行测量。采样频率指每秒采样的次数,常见的采样频率有 44100Hz(CD 音质)、48000Hz 等。采样频率越高,能够捕捉到的声音细节就越丰富,但数据量也越大。
量化是将采样得到的模拟值转换为有限个离散的数字值。量化位数表示每个采样点用多少位二进制数来表示,常见的有 8 位、16 位、24 位等。量化位数越高,声音的动态范围越大,音质也就越好。
工具推荐:audacity
1.2 视频采集
1.2.1 视觉原理与视频形成
人类的视觉具有暂留特性,当一系列快速连续显示的静态图像在一定的帧率下播放时,我们的大脑会将它们感知为连续的动态画面。
视频就是由一系列按时间顺序排列的图像帧组成的。每一帧都是一幅静态图像,通过快速连续地播放这些帧,就形成了我们看到的视频。
1.2.2 视频的数字化
视频的数字化包括对图像的空间采样(确定图像的像素数量)、色彩量化(确定每个像素的颜色表示)以及时间采样(确定每秒显示的帧数)。
在空间采样中,分辨率是关键参数,如常见的 1920×1080、3840×2160 等,分别表示水平和垂直方向的像素数量。分辨率越高,图像越清晰,但数据量也越大。
色彩量化通常使用 RGB(红、绿、蓝)或 YUV 等颜色模型,并通过一定的位深度(如 8 位、10 位)来表示每个颜色分量的强度,从而确定颜色的丰富程度。
时间采样则以帧率来衡量,常见的帧率有 24fps(电影常用)、30fps(电视标准)、60fps (用于高动态和流畅度要求的场景)等。
1.2.3 图像色彩空间
(1) RGB
- 原理:通过红、绿、蓝三个颜色通道的不同强度叠加来表示各种颜色。
- 特点:
- 直观易懂,符合人对颜色的直观认知。
- 常用于电子显示设备,如电脑显示器、手机屏幕等,因为这些设备通过控制红、绿、蓝三种颜色的发光来显示图像。
- 每个颜色通道通常用 8 位(0 - 255)来表示强度,能表示约 1670 万种颜色。
(2) YUV
- 原理:将亮度(Y)和色度(U、V)信息分开。
- 特点
- 人眼对亮度变化更敏感,对色度变化相对不敏感,所以可以对色度进行压缩而不太影响视觉效果,有利于视频压缩和传输。
- YUV 的诞生主要是为了使彩色电视信号能够与黑白电视信号兼容。黑白电视只需要接收 Y 信号就能显示出灰度图像,而彩色电视则可以通过同时接收 Y、U、V 信号来还原出彩色图像。
- 常见的采样方式有 4:4:4、4:2:2、4:2:0 等,不同采样方式对色度的压缩程度不同。
工具推荐:YuvEye
总的来说,RGB 更适合于图像的显示和创作,而 YUV 更适合于视频的处理、传输和存储。
2. 编码
音视频编码是指将原始的音视频数据通过特定的算法和技术,转换为一种更紧凑、更易于存储和传输的格式的过程。其目的是在保证音视频质量的前提下,尽可能减少数据量,以提高传输效率和节省存储空间。
2.1 常见的编码参数
音频编码参数:
- 比特率(Bitrate):也叫码率,表示每秒编码的音频数据量,单位通常为 kbps(千比特每秒)。较高的比特率通常会带来更好的音质,但文件也会更大。
- 采样率(Sampling Rate):指每秒对音频信号采样的次数,常见的有 44100Hz、48000Hz 等。较高的采样率能捕捉更丰富的音频细节。
- 声道数(Channels):如单声道(Mono)、立体声(Stereo)、5.1 声道、7.1 声道等,声道数越多,能提供更具空间感的音频体验。
视频编码参数:
- 比特率(Bitrate):同音频,决定了每秒视频编码的数据量,影响视频质量和文件大小。
- 分辨率(Resolution):视频图像的像素尺寸,如 1920×1080、3840×2160 等,分辨率越高,图像越清晰。
- 帧率(Frame Rate):每秒显示的视频帧数,常见的有 24fps、30fps、60fps 等,帧率越高,视频越流畅。
- 码率控制模式:包括恒定比特率(CBR)、可变比特率(VBR)和平均比特率(ABR)等。CBR 码率稳定,但可能在复杂场景下损失画质;VBR 根据画面复杂度动态调整码率,能在保证画质的前提下节省码率;ABR 则是介于两者之间。
- GOP 结构(Group of Pictures):指视频中一组连续的图像帧,包括 I 帧(关键帧)、P 帧(预测帧)和 B 帧(双向预测帧),GOP 长度和帧类型的比例会影响编码效率和随机访问性能。
2.2 常见的音频编码格式
-
MP3(MPEG Audio Layer 3) :
- 简介:MP3 是一种广泛使用的有损音频压缩格式。
- 特点:
- 高压缩比:能够在大幅减小文件大小的同时保持相对较好的音质。
- 广泛支持:几乎所有的音频播放器和设备都支持 MP3 格式。
- 可定制性:可以根据需要选择不同的比特率,以在文件大小和音质之间取得平衡。
- 应用场景:音乐下载、数字音频存储、多媒体播放等。
-
AAC(Advanced Audio Coding) :
- 简介:一种高效的音频编码格式,通常用于现代的多媒体应用。
- 特点:
- 高效压缩:在相同比特率下,通常能提供比 MP3 更好的音质。
- 多声道支持:适用于环绕声和多声道音频。
- 广泛应用于苹果设备、在线音乐服务和数字广播等。
- 应用场景:移动设备音频、在线流媒体、数字电视等。
-
WAV(Waveform Audio File Format) :
- 简介:一种无损的音频格式,保留了原始音频的所有信息。
- 特点:
- 音质无损:提供最高质量的音频还原。
- 大文件尺寸:由于未进行压缩,文件通常较大。
- 应用场景:音频编辑、专业音频制作、需要最高音质的场合。
-
FLAC(Free Lossless Audio Codec) :
- 简介:一种无损压缩的音频格式。
- 特点:
- 压缩无损:在减小文件大小的同时不损失音频质量。
- 开源免费:开放源代码且免费使用。
- 逐渐流行:受到追求高音质的用户和音频爱好者的青睐。
- 应用场景:高保真音乐存储、音乐库备份等。
-
Opus:
- 简介:一种相对较新的音频编码格式,专为互联网应用设计。
- 特点:
- 低延迟:适用于实时通信,如语音通话和视频会议。
- 高音质:在各种比特率下都能提供良好的音质。
- 带宽自适应:能够根据网络状况动态调整码率。
- 应用场景:网络语音通信、在线游戏语音等。
2.3 常见的视频编码格式
-
H.264/AVC
- 简介:广泛应用的视频编码标准。
- 特点:
- 良好的压缩效率,能在相对较低的码率下提供较好的画质。
- 广泛的兼容性,被大多数设备和平台支持。
- 应用场景:在线视频(如 YouTube、优酷等)、蓝光光盘、数字电视广播、监控摄像头等。
-
H.265/HEVC
- 简介:新一代高效视频编码标准。
- 特点:
- 相比 H.264 有更高的压缩比,节省带宽和存储空间。
- 支持更高的分辨率和帧率。
- 应用场景:4K/8K 超高清视频、流媒体服务、移动视频通信等。
-
VP8\VP9
- 简介:由谷歌开发的开放视频编码格式。
- 特点:
- 具有不错的压缩性能和画质表现。
- 开源且免费使用。
- 应用场景:YouTube 等在线视频平台、WebRTC 实时通信。
-
AV1
- 简介:开放、免版税的新一代视频编码格式。
- 特点:
- 出色的压缩效率,能显著降低码率。
- 适应多种分辨率和设备。
- 应用场景:在线视频、虚拟现实等。
-
AVS3
- 简介:AVS3 是我国自主研发的新一代视频编码标准,全称为《信息技术 高效多媒体编码 第 3 部分:视频》。
- 特点:
- 出色的压缩性能:能够在相同画质下显著降低码率,节省带宽和存储空间。
- 对高分辨率和高动态范围视频的支持:适用于 4K、8K 及更高分辨率的视频,以及 HDR(高动态范围)视频的编码。
- 优化的并行处理能力:利于在多核计算环境中提高编码和解码的效率。
- 灵活的编码工具和配置选项:可以根据不同的应用需求和场景进行定制化配置。
- 应用场景:超高清(4K\8K)广播电视、互联网视频服务、移动视频通信等。
2.4 视频编码原理简述
视频编码的原理主要基于以下几个关键步骤和技术:
-
帧内预测(Intra Prediction)
- 对于每一帧图像,利用同一帧内相邻像素之间的相关性,通过预测当前像素的值来减少冗余信息。
-
帧间预测(Inter Prediction)
- 利用视频序列中相邻帧之间的相似性,通过运动估计(Motion Estimation)和运动补偿(Motion Compensation)技术,找到当前帧与参考帧之间的差异,只对变化的部分进行编码,从而大幅减少数据量。
-
变换编码(Transform Coding)
- 通常使用离散余弦变换(Discrete Cosine Transform,DCT)等方法将图像从空间域转换到频率域。在频率域中,能量通常集中在少数低频系数上,便于进行压缩。
-
量化(Quantization)
- 对变换后的系数进行量化,将连续的数值范围映射到有限的离散值,以减少数据量。但量化会引入一定的失真。
-
熵编码(Entropy Coding)
- 例如哈夫曼编码、算术编码等,对量化后的系数进行无损压缩,进一步去除数据中的冗余。
-
环路滤波(Loop Filtering)
- 用于减少编码过程中产生的块效应等失真,提高解码后的图像质量。
通过这些步骤的协同工作,视频编码能够在保证一定视觉质量的前提下,有效地降低视频数据的存储空间和传输带宽需求。不同的视频编码标准(如 H.264、H.265 等)在具体实现这些步骤的算法和技术上可能会有所不同,以达到更好的编码效率和图像质量。
工具推荐:ElecardStreamEye
3. 传输
3.1 常见的流媒体传输协议
-
RTSP(Real Time Streaming Protocol,实时流传输协议)
- 工作原理:
- RTSP 本身并不传输流媒体数据,而是通过与 RTP(Real-time Transport Protocol,实时传输协议)、RTCP(Real-time Transport Control Protocol,实时传输控制协议)等协议配合使用来实现流媒体的控制和传输。
- 客户端向服务器发送请求,服务器响应并建立连接,然后通过 RTP 传输数据,RTCP 反馈传输质量信息。
- 优点:
- 强大的控制功能,允许对播放、暂停、快进、快退等操作进行精细控制。
- 适用于专业的多媒体系统,如视频监控和远程教学。
- 缺点:
- 由于其复杂性,实现和部署相对较困难。
- 可能会被防火墙阻止,因为它使用了多个端口。
- 工作原理:
-
RTMP(Real Time Messaging Protocol,实时消息协议)
- 工作原理:
- 基于 TCP 连接,数据以消息的形式在客户端和服务器之间传递。
- 服务器将流媒体数据分割为小的数据包进行传输。
- 优点:
- 低延迟,适合实时性要求高的直播场景。
- 被许多主流的直播平台和内容分发网络(CDN)支持。
- 缺点:
- 需要 Adobe Flash Player 支持,随着 Flash 的逐渐淘汰,其应用受到一定限制。
- 由于基于 TCP,在网络不稳定时可能出现卡顿。
- 工作原理:
-
HLS(HTTP Live Streaming,HTTP 直播流)
- 工作原理:
- 将整个流分成多个小的基于 HTTP 的文件片段,每个片段包含一小段时间的视频内容。
- 客户端通过下载一个包含播放列表(m3u8 文件)的索引文件来获取可用的片段,并根据网络状况选择合适的片段进行播放。
- 优点:
- 基于 HTTP,容易穿越防火墙和代理服务器,部署方便。
- 自适应码率切换,能根据网络条件自动选择合适的视频质量。
- 缺点:
- 延迟相对较高,通常在 10 秒以上。
- 对于短时间的内容(如短视频),切片操作可能导致效率降低。
- 工作原理:
-
DASH(Dynamic Adaptive Streaming over HTTP,基于 HTTP 的动态自适应流)
- 工作原理:
- 与 HLS 类似,将视频分割为不同码率和分辨率的片段,并通过一个描述文件(MPD 文件)提供片段信息。
- 客户端根据网络带宽和设备能力动态选择合适的片段进行下载和播放。
- 优点:
- 支持更广泛的视频格式和编码标准。
- 提供更精细的码率自适应控制。
- 缺点:
- 标准相对较新,实现和部署的复杂性较高。
- 工作原理:
3.2 实时通信协议WebRTC
WebRTC(Web Real-Time Communication,网页实时通信)是一项支持网页浏览器进行实时语音、视频和数据通信的开源技术。
主要特点:
- 端到端通信:允许浏览器之间直接建立连接,无需通过中间服务器中转媒体数据,减少了延迟和服务器成本。
- 实时性:能够实现低延迟的实时通信,适用于视频会议、在线聊天、远程协作等对实时性要求高的应用。
- 跨平台支持:可在多种操作系统和浏览器上运行,包括 Windows、Mac、Linux,以及 Chrome、Firefox、Safari 等主流浏览器。
- 多媒体支持:不仅支持音频和视频通信,还可以传输文本、文件等数据。
- 网络适应性:能够根据网络状况自动调整码率、分辨率等参数,以保证通信的流畅性。
工作原理:
- 信号处理:使用一系列算法进行音频和视频的采集、编码、解码和渲染。
- 网络协商:通过信令服务器(如 SIP 服务器或自定义的信令服务)交换信息,以确定双方的网络地址、支持的编解码器和通信参数。
- 建立连接:利用 ICE(Interactive Connectivity Establishment)框架穿越网络地址转换(NAT)和防火墙,建立端到端的连接。
- 数据传输:使用 RTP(Real-time Transport Protocol)协议传输音频和视频数据,RTCP(Real-time Transport Control Protocol)协议进行传输质量的监控和反馈。
应用场景:
- 视频会议:如 Google Meet、Zoom 等在线会议工具部分采用了 WebRTC 技术。
- 在线教育:实现师生之间的实时互动。
- 社交应用:支持视频聊天和实时互动功能。
- 远程医疗:方便医生和患者进行远程诊断和咨询。
优势:
- 开发便捷:开发者可以快速集成 WebRTC 到网页应用中,无需深入了解底层的网络和多媒体技术。
- 无需插件:用户无需安装额外的插件就能使用实时通信功能。
- 安全性:采用加密技术保障通信的安全。
挑战:
- 浏览器兼容性:虽然主流浏览器支持,但在某些旧版本或特定环境下可能存在兼容性问题。
- 网络复杂性:处理各种网络环境和 NAT 穿越可能会遇到困难。
- 学习成本:WebRTC代码极为庞大和复杂,深入学习成本较高。
4. 存储
音视频存储是指将音频和视频数据以数字形式保存在各种存储介质中的过程。这些存储介质可以包括硬盘、固态硬盘、云存储等。音视频存储的目的是为了方便用户在需要时能够随时访问和播放这些音视频文件。
音频和视频一般不会单独存储,而是采用一种音视频的容器,将音频和视频数据存储在一个文件里,也叫做封装。
音视频封装是将音频和视频数据按照一定的格式和标准进行打包,使其成为一个可以在不同设备和播放器上播放的文件的过程。它就像是给音视频数据穿上了一件 “外衣”,这件 “外衣” 包含了关于音视频的各种信息,如编码格式、分辨率、帧率、声道数等,同时也规定了数据在文件中的存储方式和排列顺序。
4.1 常见的音视频封装格式
-
MP4(MPEG-4 Part 14)
- 特点:
- 良好的兼容性:几乎所有的现代多媒体设备和播放器都支持 MP4 格式。
- 高效的压缩:能够有效地存储音频和视频数据,减小文件大小。
- 支持多种编码格式:可以容纳 H.264、H.265 等视频编码和 AAC、MP3 等音频编码。
- 元数据支持:可以包含丰富的关于视频的信息,如标题、作者、版权等。
- 应用场景:
- 在线视频平台:如 YouTube、Netflix 等,提供高质量的视频内容。
- 移动设备:用于存储和播放本地视频,如手机、平板电脑。
- 多媒体创作和编辑:作为常见的输出格式,方便后续处理和分享。
- 特点:
-
FLV(Flash Video)
- 特点:
- 流式传输优化:专为在网络上进行流式播放而设计,能够快速开始播放,即使在下载未完成时。
- 较小的开销:封装结构相对简单,减少了额外的开销。
- 与 Adobe Flash 技术紧密结合:在过去,Adobe Flash Player 的广泛普及使得 FLV 格式得以广泛应用。
- 应用场景:
- 视频分享网站:在早期的视频分享平台,如优酷、土豆等,FLV 是主要的视频格式。
- 在线直播:一些实时直播服务曾经采用 FLV 进行传输。
- 特点:
-
MKV(Matroska)
- 特点:
- 高度灵活性:几乎可以容纳任何格式的视频、音频和字幕流,包括一些较新或不太常见的编码。
- 多轨道支持:可以同时包含多个不同语言或版本的音频和字幕轨道,方便用户选择。
- 章节支持:能够定义章节,方便用户快速导航。
- 开源和免费:没有专利限制,可自由使用和修改。
- 应用场景:
- 高清电影和电视剧:对于包含多语言字幕和高质量音视频的内容,MKV 是理想的选择。
- 影视爱好者收藏:便于保存具有丰富特性的多媒体内容。
- 特点:
-
AVI(Audio Video Interleave)
- 特点:
- 历史悠久:是 Windows 操作系统上早期常见的视频格式之一。
- 简单的结构:相对较容易理解和处理。
- 应用场景:
- 早期的视频存储和播放:在一些较旧的系统和软件中仍有一定的存在。
- 简单的视频编辑和转换:由于其结构简单,在某些基本的编辑操作中可能会使用。
- 特点:
-
TS(Transport Stream)
- 特点:
- 适合广播环境:专为广播和传输而设计,具有良好的容错性和同步机制。
- 分段传输:可以方便地将视频分割成多个小段进行传输和处理。
- 实时性强:能够适应实时变化的数据流。
- 应用场景:
- 数字电视广播:包括地面数字电视、卫星电视等。
- IPTV 服务:通过网络传输电视节目。
- 视频监控系统:保证连续和稳定的视频流传输。
- 特点:
5. 解码
音视频解码是将经过压缩编码的音视频数据还原为原始的音频和视频信号的过程。在数字音视频领域,为了便于存储和传输,音视频数据通常会被压缩编码成特定的格式。当我们需要播放这些音视频文件时,就需要通过解码将其转换为可播放的音频和视频信号。简单来说,解码就是把 “加密” 的音视频数据变回我们能听懂看懂的声音和画面。
6. 渲染
音视频渲染是将经过解码的音频和视频数据转换为可以在显示设备(如屏幕、扬声器)上呈现的过程。
6.1 音频渲染
音频渲染则是将解码后的音频数据发送到音频输出设备(如扬声器、耳机)进行播放。这通常包括:
- 音频混音:如果有多个音频源(如背景音乐、音效、语音),需要进行混音处理。
- 音量控制:根据用户设置或系统要求调整音频的音量大小。
- 音频设备适配:确保音频数据与所连接的音频输出设备的特性和能力相匹配。
6.2 视频渲染
对于视频渲染,它涉及将数字图像数据转换为可见的图像并显示在屏幕上。这包括以下几个关键方面:
- 图像合成:将解码后的视频帧与可能存在的图形元素(如字幕、图形叠加)进行合成。
- 色彩空间转换:将视频数据的色彩空间(如 YUV )转换为显示设备所支持的色彩空间(如 RGB )。
- 缩放和适配:根据显示窗口的大小和比例,对视频帧进行缩放和调整,以确保完整且合适地显示。
- 帧率同步:使显示的帧率与原始视频的帧率保持一致,避免卡顿或跳帧现象。
7. 同步
音频和视频各自独立渲染,可能会导致声音提前或滞后于画面,这在观看视频、视频会议、多媒体教学等场景中是非常影响效果的,所以就需要一定的策略保证音视频的同步。
音视频同步是指在播放多媒体内容时,确保音频和视频的时间关系保持一致,使得声音和画面的动作能够精确匹配。
7.1 关键概念
- 时间戳(Timestamp):在编码音频和视频数据时,会为每个数据单元(如音频采样、视频帧)添加时间戳,以指示其在原始媒体流中的准确时间位置。
- 参考时钟:播放系统通常会使用一个稳定的参考时钟来衡量时间的流逝。
- 缓冲区管理:在接收和解码音视频数据时,会使用缓冲区来存储一定量的数据,以应对网络抖动或数据处理速度的变化。但缓冲区的大小和管理策略需要精心设计,以避免引入过大的延迟或导致同步问题。
- 同步算法:播放系统会根据音视频的时间戳和参考时钟,采用特定的算法来调整播放速度或丢弃 / 重复某些数据帧,以实现同步。
- 反馈机制:监测音视频播放的实际状态,如果发现不同步,及时进行调整。
7.2 同步策略
- 音频主导同步
- 原理:由于人类听觉对音频与视频不同步的情况更为敏感,所以以音频的时间轴为基准来调整视频的播放进度。
- 优势:能优先保证观众听到的声音与看到的画面在感知上更协调,避免音频的延迟或提前给观众带来明显的不适。
- 应用场景:最常见的同步策略,常用于对音频准确性要求较高的场景,如音乐演奏、电影、电视等。
- 视频主导同步
- 原理:以视频的时间轴作为基准,根据视频的播放进度来调整音频的播放。
- 劣势:因为音频不同步更容易被察觉和影响体验,所以这种方式较少使用。
- 应用场景:在一些对视频内容的连续性和准确性要求极高,而对音频同步要求相对较低的特殊场景可能会用到。
- 外部同步
- 原理:引入一个独立于音频和视频的第三方参考时钟或信号来实现同步。例如,使用外部的高精度时钟设备,或者从网络获取的精确时间信号作为标准,音频和视频的播放都依据这个第三方的时间参考来进行调整。
- 优势:可以提供更准确和稳定的同步基准,不受音频和视频自身编码或传输过程中的偏差影响。
- 应用场景:在专业的广播系统、大型多媒体演出等对同步精度要求极高的环境中使用。
8. 工具推荐
- 音频播放工具:audacity
- YUV播放工具:YuvEye
- 视频码流分析及播放工具:ElecardStreamEye
- 抓包工具:wireshark