5分钟带你了解音视频开发

发布时间:2026/8/27 12:41:06
5分钟带你了解音视频开发 前言想赚钱第一点就得选对自己的方向有的行业和领域无论你如何努力天花板也不过如此。选对时代的风口就算是头猪都能被吹上天今天我们就来聊聊音视频开发。蓬勃发展的音视频开发时至今日短视频App可谓是如日中天一片兴兴向荣。随着短视频的兴起音视频开发也越来越受到重视但是由于音视频开发涉及知识面比较广入门门槛相对较高让许许多多开发者望而生畏。接下来我介绍一下音视频开发的基础部分帮助大家学习。一. 颜色模式RGBRGB颜色模型的主要目的是在电子系统中检测表示和显示图像比如电视和计算机但是在传统摄影中也有应用。RGB基础的部分不过多描述更多内容点击标题见维基百科。YUVY’UV的发明是由于彩色电视与黑白电视的过渡时期。黑白视频只有YLumaLuminance视频也就是灰阶值。到了彩色电视规格的制定是以YUV/YIQ的格式来处理彩色电视图像把UV视作表示彩度的CChrominance或Chroma如果忽略C信号那么剩下的YLuma信号就跟之前的黑白电视频号相同这样一来便解决彩色电视机与黑白电视机的兼容问题。Y’UV最大的优点在于只需占用极少的带宽因为人眼对亮度敏感对色度不敏感因此减少部分UV的数据量但人眼感知不到。YUV也称为YCbCr对于每个分量如下YLuminance, 亮度也就是灰度值。除了表示亮度信号外还含有较多的绿色通道量。UCb蓝色通道与亮度的差值。VCr红色通道与亮度的差值。如下图可以看到3个分量的效果差值。YUV示例图RGB与YUV转换公式 (RGB取值范围均为0~255)Y0.299R0.587G0.114B ⁄ RY1.14VU0.147R0.289G0.436B ⁄ GY0.39U0.58VV0.615R0.515G0.100B ⁄ BY2.03UHSV色调H: 用角度度量取值范围为0°360°从红色开始按逆时针方向计算红色为0°绿色为120°,蓝色为240°。它们的补色是黄色为60°青色为180°,品红为300°饱和度S: 饱和度S表示颜色接近光谱色的程度。一种颜色可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大颜色接近光谱色的程度就愈高颜色的饱和度也就愈高。饱和度高颜色则深而艳。光谱色的白光成分为0饱和度达到最高。通常取值范围为0%100%值越大颜色越饱和。明度V: 明度表示颜色明亮的程度对于光源色明度值与发光体的光亮度有关对于物体色此值和物体的透射比或反射比有关。通常取值范围为0%黑到100%白。hsv_1.pnghsv_2.pngRGB和CMY颜色模型都是面向硬件的而HSVHue Saturation Value颜色模型是面向用户的。HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线的白色顶点向黑色顶点观察就可以看到立方体的六边形外形。六边形边界表示色彩水平轴表示纯度明度沿垂直轴测量。HSV在做颜色检测方面比较常用可以参考文章HSV颜色检测。二. 视频基础概念帧(Frame)简单的理解帧就是为视频或者动画中的每一张画面而视频和动画特效就是由无数张画面组合而成每一张画面都是一帧。帧数(Frames)帧数其实就是为帧生成数量的简称可以解释为静止画面的数量帧率(Frame Rate)帧率(Frame rate) 帧数(Frames)/时间(Time)单位为帧每秒(f/s, frames per second, fps)。刷新率屏幕每秒画面被刷新的次数分为垂直刷新率和水平刷新率一般我们提到的都是指垂直刷新率以赫兹(Hz)为单位刷新率越高图像就越稳定图像显示就越自然清晰。目前 大多数显示器根据其设定按 30Hz、 60Hz、 120Hz 或者 144Hz 的频率进行刷新。 而其中最常见的刷新频率是 60 Hz。 这样做是为了继承以前电视机刷新频率为 60Hz 的设定。帧率关键值10~12 FPS由于人类眼睛的特殊生理结构如果所看画面之帧率高于每秒约10至12帧的时候就会认为是连贯的此现象称之为视觉暂留。24 FPS一般电影的拍摄及播放帧数是每秒24帧。60 FPS这个帧率对人眼识别来说已经具备较高的平滑度。85 FPS人类大脑处理视频的极限人眼无法分辨更高频率的差异。60FPS在做页面性能优化时常用60FPS作为一个基准所以需要尽量让每一帧的渲染控制在16ms内这样才能达到一秒60帧的流畅度。分辨率视频、图片的画面大小或尺寸。码率/比特率单位时间播放连续的媒体如压缩后的音频或视频的比特数量。常用单位“比特每秒”缩写是“bit/s”。比特率越高带宽消耗得越多。三. CPU GPUCPU中央处理器(英文全名Central Processing Unit)包括运算器算术逻辑运算单元ALUArithmetic Logic Unit和高速缓冲存储器Cache及实现它们之间联系的数据Data、控制及状态的总线Bus。GPU图形处理器英语全名Graphics Processing Unit专为执行复杂的数学和几何计算而设计的拥有2D或3D图形加速功能。GPU相比于CPU更强大的2D、3D图形计算能力可以让CPU从图形处理的任务中解放出来执行其他更多的系统任务这样可以大大提高计算机的整体性能。硬件加速硬件加速Hardware acceleration就是利用硬件模块来替代软件算法以充分利用硬件所固有的快速特性。硬件加速通常比软件算法的效率要高。将2D、3D图形计算相关工作交给GPU处理从而释放CPU的压力也是属于硬件加速的一种。硬解和软解硬解和上面的硬件加速对应即使用硬件模块来解析视频、音频文件等而软解即是用CPU去计算解析。四. 视频封装格式(Container format)格式全名开发商初版年限特点MP4MP4Moving Picture Experts Group即 MPEG(动态图像专家组)1998常用有损压缩格式通用性强AVIAudio Video Interleaved(音频视频交错格式)微软1992体积大算法简单MOVQuickTime 影片格式Apple1991苹果专属格式对很多其他的播放器支持不是很友好WMVWindows Media Video微软2003微软的专业视频格式兼容性并不是很好FLVAdobe Flash 网络流媒体格式Adobe2002被淘汰的早期网络视频格式MKVMatroska 多媒体容器Matroska.org2002最有包容性的视频格式能容纳无限量、多种不同类型编码的视频、音频及字幕流WebMWebMGoogle2010谷歌推出的 HTML5 标准的网络视频标准,以MKV容器格式为基础开发RMVBRMVBReal Networks1997根据不同的网络传输速率而制定出不同的压缩比率从而实现在低速率的网络上进行影像数据实时传送和播放具有体积小画质不错的优点。已过时。更多参考 维基百科视频文件格式。五. 视频编码格式(Codec)1.MPEG(Moving Picture Experts Group, ISO旗下的组织)MPEG是Moving Picture Experts Group的简称。这个名字本来的含义是指一个研究视频和音频编码标准的“动态图像专家组”组织成立于1988年致力开发视频、音频的压缩编码技术。版本用途MPEG - 1VCDMPEG - 2DVD、数字有线电视信号MPEG - 4(第二部分)视频电话、网络传输、广播和媒体存储2.H.26X : ITU-T VCEG(Visual Coding Experts Group国际电联旗下的标准化组织)制定版本用于H.261老的视频会议和视频电话产品H.262DVD、数字有线电视信号(与MPEG共同制定与MPEG-2完全一致)H.263视频会议、视频电话和网络视频H.264高精度视频的录制、压缩和发布格式(与MPEG-4第十部分完全一致)当前主流H.265H.264的两倍之压缩率可支持4K分辨率甚至到超高画质电视最高分辨率可达到8192×43208K分辨率3. H.264当前主流的编码格式是H.264这是由ITU-T VCEG和MPEG共同制定的标准MPEG - 4第十部分内容也是H.264。视频封装格式 视频编码格式封装格式是提供了一个容器用于存放视频、音频以及其他配置信息而编码格式是指对视频画面内容进行压缩的一种标准。六. 音频格式WAV因其文件扩展名为wav微软和IBM联合开发的标准数据本身的格式为PCM或压缩型属于无损格式。MP3: MP3是一种音频压缩技术其全称是动态影像专家压缩标准音频层面3Moving Picture Experts Group Audio Layer III简称为MP3。压缩比4:1~10:1之间。AACAdvanced Audio Coding 出现于1997年由Fraunhofer IIS、杜比实验室、ATT、Sony、Nokia等公司共同开发。AAC压缩比通常为181。相比MP3采用更高效的编码算法音质更佳文件更小。OpusOpus格式是一个开放格式使用上没有任何专利或限制比MP3、AAC、HE-AAC等常见格式有更低的延迟和更好的声音压缩率。2012年7月2日Opus被IETF批准用于标准化。七. H.264编码介绍IPB帧I帧帧内编码帧(intra picture)采用帧内压缩去掉空间冗余信息。P帧前向预测编码帧(predictive-frame)通过将图像序列中前面已经编码帧的时间冗余信息来压缩传输数据量的编码图像。参考前面的I帧或者P帧。B帧双向预测内插编码帧(bi-directional interpolated prediction frame)既考虑源图像序列前面的已编码帧又顾及源图像序列后面的已编码帧之间的冗余信息来压缩传输数据量的编码图像也称为双向编码帧。参考前面一个的I帧或者P帧及其后面的一个P帧。PTS和DTSDTS(Decoding Time Stamp)是标识读入内存中bit流在什么时候开始送入解码器中进行解码。也就是解码顺序的时间戳。PTS(Presentation Time Stamp)用于度量解码后的视频帧什么时候被显示出来。在没有B帧的情况下DTS和PTS的输出顺序是一样的一旦存在B帧PTS和DTS则会不同。也就是显示顺序的时间戳。GOP即Group of picture(图像组)指两个I帧之间的距离Reference(参考周期)指两个P帧之间的距离。一个I帧所占用的字节数大于一个P帧一个P帧所占用的字节数大于一个B帧。所以在码率不变的前提下GOP值越大P、B帧的数量会越多平均每个I、P、B帧所占用的字节数就越多也就更容易获取较好的图像质量Reference越大B帧的数量越多同理也更容易获得较好的图像质量。简而言之字节大小I P B解码顺序I - P - BGOP解码案例更多Android开发详细资料扫码免费获得写在最后在技术领域内没有任何一门课程可以让你学完后一劳永逸再好的课程也只能是“师傅领进门修行靠个人”。“学无止境”这句话在任何技术领域都不只是良好的习惯更是程序员和工程师们不被时代淘汰、获得更好机会和发展的必要前提。如果你觉得自己学习效率低缺乏正确的指导可以扫码领取更多详细音视频资料并加入我们资源丰富学习氛围浓厚的技术圈一起学习交流吧加入我们吧群内有许多来自一线的技术大牛也有在小厂或外包公司奋斗的码农我们致力打造一个平等高质量的Android交流圈子不一定能短期就让每个人的技术突飞猛进但从长远来说眼光格局长远发展的方向才是最重要的。35岁中年危机大多是因为被短期的利益牵着走过早压榨掉了价值如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。