关注+星号公众号,不容错过精彩
作者:HywelStar
1. 引言
在如今的视频应用无处不在的时代,作为嵌入式软件工程师,掌握视频相关的基础知识至关重要。视频处理在安防监控、无人机、汽车电子等领域应用广泛,而嵌入式系统对视频处理的实时性、低功耗、高稳定性要求尤为严格。因此,嵌入式工程师需要具备对视频编码、容器、软硬件编解码、渲染和传输等基础概念的认识,以便更有效地设计和优化系统。
本章将概述视频技术的核心基础知识,从编码格式和容器的选择,到软硬件编解码的差异,再到渲染和传输的基本流程,帮助工程师在项目开发中从容应对视频处理的技术挑战,提高系统性能,优化用户体验。
2. 视频基础概念
视频的形成是由一张一张画面按照一定时间播放展现,这样从而看到视频。
• 帧(Frame):视频是由一系列静态图像(即帧)组成的。帧率(Frames per Second, FPS)是每秒显示的帧数,通常为24FPS、30FPS、60FPS等。更高的帧率能够提供更流畅的视觉体验,但同时也会增加数据量。
• 分辨率:指每帧图像中包含的像素数量,通常以“宽度 × 高度”来表示,这代表图像的宽度和高度分别有多少个像素点。常见的分辨率有720p (1280x720)、1080p (1920x1080)、4K (3840x2160)等,对于某些分辨率有特定缩写,比如QGVA表示320x240, VAG表示640x480, 8K表示7680x4320。分辨率越高,视频的清晰度越好,但文件大小和带宽要求也越高。
• 比特率(Bitrate):指每秒视频数据的传输速率,通常以kbps或Mbps表示。比特率越高,视频质量越好,但同时占用的存储和带宽资源也更多。
如图查看一个视频的信息,可以看到关于该视频的分辨率,比特率,帧速率相关信息。
3. 视频编码
• 编码概念:为什么视频需要压缩与编码?视频编码的目的就是为了减少存储,传输的大小,原有的视频数据过大,整个过程将未经压缩的原始视频数据转化为压缩格式的过程,以便减少存储和传输需求。编码通常通过压缩算法来减少数据冗余,但需要在压缩效率和质量之间做出平衡。
• 常见编码标准
• H.264 / AVC:一种广泛使用的视频编码标准,兼具压缩效率和画质,适合高清及以下视频,广泛应用于网络视频、蓝光影碟等。目前采用H.264是一种非常常见视频编码格式,在监控领域使用范围非常广泛。
• H.265 / HEVC:H.264的后续标准,压缩效率提高约50%,尤其适合4K及以上分辨率视频,但对解码设备要求更高。
• AV1:一种开源的高效视频编码标准,由AOM联盟开发,适合低带宽、高质量的视频流传输。也是一种去替代VP9,另外一方面考虑解决H265专利费和专利授权用费用。
• VP8/VP9:Google开发的开源编码标准,广泛用于WebM格式的视频文件中。
• 编码原理:视频编码主要依赖于两种压缩方式:
• 帧内压缩(Intra-frame Compression):在单帧内进行压缩,不依赖其他帧,适合关键帧。
• 帧间压缩(Inter-frame Compression):利用帧与帧之间的相似性进行压缩,通过预测编码等方式减少数据量。
4. 视频容器格式
• 容器的作用:视频容器将编码的视频流和音频流打包在一起,同时可以包含字幕、元数据等。容器的作用是保证音视频的同步播放,并提高数据管理的灵活性。
• 常见视频容器MP4:最常见的视频容器格式,具有良好的兼容性,适用于大多数设备。MKV:适合高质量视频,支持多音轨、字幕等,广泛用于影视作品。AVI:较老的容器格式,兼容性广,但不支持最新的视频功能。MOV:苹果公司推出的格式,适合Mac和iOS设备。
• 容器与编码的关系:容器与编码格式相互独立,通常一个容器可以包含多种编码格式的视频和音频流。
关于经典的MP4格式相关可以查看:
https://docs.fileformat.com/video/mp4/
5. 软编解码与硬编解码
视频设计编码和解码的环节,目前有软编解码和硬编解码,软编解码主要依靠CPU进行,硬编解码主要依靠特定的硬件资源加速器完成这个操作,一般来说硬件编解码效率高,更具备优势。
• 软编解码(Software Encoding/Decoding)
• 通过CPU进行视频编码解码的原理和应用场景
• 优点:通用性强,不依赖硬件
• 缺点:性能消耗大,对CPU压力大
• 硬编解码(Hardware Encoding/Decoding)
• 依赖GPU、VPU等硬件资源的加速解码
• 优点:解码效率高,性能功耗比更好
• 缺点:硬件兼容性有限,需特定设备支持
• 软硬编解码的选择:在不同应用场景下的权衡
6. GPU与VPU在视频处理中的作用
在涉及音视频经常会听到GPU
,VPU
相关支持,那么这些对于视频又是如何的一个角色。
6.1 GPU
GPU(Graphics Processing Unit):GPU最初是为加速图形渲染而设计的硬件,可以在短时间内处理大量数据。现代的GPU具有强大的并行计算能力,适合处理密集型的数据流,因此在视频渲染、图像处理及特效应用中广泛使用。
GPU在视频播放过程中主要用于视频渲染。视频渲染指将解码后的视频帧绘制到显示屏幕上的过程。GPU通过并行处理多个像素和纹理,能够有效提升高分辨率(如4K和8K)视频的渲染速度,从而实现流畅播放和更好的图像质量。
GPU的渲染功能尤其重要于以下场景:
• 高清视频和游戏渲染:需要同时处理大量细节,实时输出画面。
• 图像特效:如滤镜、色彩调整、锐化等处理效果,通过GPU实现实时处理。
• 视频剪辑与后期处理:在专业视频剪辑软件中,GPU被广泛用于实时预览、转场效果、画面合成和色彩校正等处理,加速处理速度。
6.2 VPU
VPU(Video Processing Unit):VPU是专门用于视频处理的硬件,核心功能集中在视频的编解码上,特别是在高效视频压缩和解压缩上。相比于通用的图形处理器,VPU更加专注于视频数据的处理,能够在较低功耗的前提下实现高效的压缩和解压操作,特别适用于嵌入式设备和移动端应用。
VPU 通过内置的编解码模块,支持多种视频格式的硬件加速解码,如H.264、H.265、VP8、VP9等主流视频编码格式。
主要作用如下:
• 实时视频播放:通过VPU解码的视频能够更加快速显示,减少延迟。
• 视频监控与安防:VPU在视频监控设备中常见,可以实时解码并处理多路视频流。
• 节省功耗:VPU在低功耗场景中更具优势。例如智能手机和移动端设备上,VPU的硬件编解码可以显著减少电池消耗。
7. 渲染技术
视频渲染,什么叫做渲染?
是将视频数据处理成可在屏幕上显示的图像的过程。具体来说,渲染的过程包括将解码后的原始视频帧按照指定的方式处理并输出到屏幕上,最终在用户设备上呈现出动态影像。
常见的图形接口:
• OpenGL:跨平台的3D图形API,适合各种图形渲染
• Vulkan:高性能的图形接口,适合低延迟、高性能需求
• DirectX:微软主推的图形API,适合Windows平台
渲染管线:渲染数据流的处理过程(顶点处理、片段处理、光栅化等)
常见渲染技术
• 帧缓冲管理
• 着色器的使用(Shader)
• 后处理技术(如抗锯齿、动态模糊)
8. 其他视频处理相关概念
• 色彩空间(Color Space):
时间戳(Timestamp)与同步:音视频同步播放是多媒体播放的核心。时间戳管理用于保证音视频内容的同步。
流媒体传输协议:
• RTSP:常用于实时视频流,适合视频监控和实时通信。
• HLS:苹果提出的协议,适合网络视频播放。
• DASH:自适应比特率协议,根据网络情况自动调整视频质量。
• RGB与YUV:RGB用于显示器,YUV更适合视频传输。YUV通过分离亮度和色度,能有效压缩数据。
• BT.601 vs BT.709 vs BT.2020:视频行业不同阶段的色彩标准,BT.2020支持更广的色域范围。
9. 结语
本章节主要对视频相关基础知识和概念进行一个叙述,视频的编解码,视频容器,渲染等概念,从目前视频的方向在嵌入式领域涉及到视频的编解码,视频传输,视频存储,视频渲染等一些技术,也是目前一些常见的相关技术。对于这每一个方向都有很多相关的知识,需要深入理解还需要很多时间精力去了解。
往期推荐