美文网首页Android开发教程
音视频学习之路--一些基础概念

音视频学习之路--一些基础概念

作者: 蜗牛是不是牛 | 来源:发表于2021-12-12 15:37 被阅读0次

    前言

    本章还是继续了解一些音视频基础的名词等,因为这方面内容非常多,所以还是多阅读、多复习。

    正文

    视频编码

    根据之前的播放器原理,视频编码也就是通过特定的压缩技术,将某个视频格式文件转换为另一种视频格式文件,这个编码技术主要分为2类,一类是H.264、H.265等,还有一种是MPEG。

    1. MPEG系列:MPEG其实就是Moving Picture Experts Group,即运动图像专家组。它在视频编码主要有MPEG1(VCD使用)、MPEG2(DVD使用)、MPEG4、MPEG4 AVC(当前热门),同时它还有音频编码技术,主要有MPEG Audio Layer3(大名鼎鼎的MP3)、MPEG-2 AAC、MPEG-4 AAC(AAC目前热门)。

    2. H.26X系列:这个系列的编码有个侧重点就是网络传输,而且只有视频编码,主要有H.262、H264(这个是MPEG4 AVC合作的结晶)。

    音频编码

    音频编码主要就以下几种常用,其中AAC目前使用的最多。

    1. AAC:一种专门为声音数据设计的文件压缩格式,与MP3不同的是它采用全新算法编码,更加高效,具有更高的性价比,但同时AAC属于有损压缩,音质和无损压缩的APE等无法比。

    2. MP3:一种音频压缩技术,压缩率能到到1:10左右,特定是利用人耳对高频声音信号不敏感的特效,进行过滤。

    3. AC3:AC3是Dobby实验室发展的,广泛应用于5.1声道等多声道场景。

    多媒体播放组件

    这里直接说Android平台的情况吧,比如一个视频能在Android平台上播放需要下面相关组件。

    1. MediaPlayer:播放控制。

    2. MediaCodec:音视频编解码。

    3. OMX:多媒体部分采用的编码标准。

    4. StageFright:替代之前的OpenCore,这部分在Android中以动态库的形式存在,也就是libstagefright.so。

    5. AudioTrack:音频播放。

    常见的多媒体框架和解决方案

    1. VLC:即Video LAN Client,是一款自由的、开源的跨平台多媒体播放器及框架。

    2. FFmpeg:多媒体解决方案,广泛应用。

    3. GStreamer:一套构建多媒体应用的开源多媒体框架。

    DTS和PTS

    这2个概念很重要,就是解码时间戳和显示时间戳,这2个是什么用呢,就要涉及I、P、B帧的概念了。

    I帧

    I帧图像采用帧内编码方式,即只利用了单帧图像内的空间相关性,而没有利用时间相关性。

    I帧是帧内压缩,不使用运动补偿,由于I帧不依赖其他帧,所以是随机存取的入点,同时是解码的基准帧。

    P帧

    P帧和B帧采用的是帧间编码方式,即同时利用了空间和时间上的相关性。P帧图像只采用前向时间预测,可以提高压缩效率和图像质量,也就是P帧依赖于前面的帧数据。

    B帧

    B帧采用双向时间预测,可以大大提高压缩倍数,这里值得注意的是B帧图像采用了未来帧作为参考,因此MPEG-2编码码流中图像帧的传输顺序和显示顺序是不同的。

    从上面概念我们得知,一个I帧可以不依赖其他帧就可以解码出一幅完整的图像,而P帧需要依赖视频流中排在它前面的帧才能解码出图像,而B帧需要依赖视频流中排在它2前面或后面的帧才能解码出图像。

    所以就有了DTS、PTS的概念。

    DTS

    即DTS(Decoding Time Stamp),解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据。

    PTS

    即PTS(Presentation Time Stamp),解码时间戳,这个时间戳的意义在于告诉播放器在什么时候显示这一帧的数据。

    这里我们也就明白了,当视频中没有B帧时,这2个顺序是一样的,当有B帧时就不一定了。

    假如有个视频流里面是I P B B这个顺序,显示的顺序是I B B P,这时的解码顺序就不能是I B B P,需要使用I P B B来解码。

    所以DTS和PTS就是解决视频流中有B帧时的情况。

    YUV和RGB

    这属于2种颜色空间,其中RGB我们很好理解,就是3原色混合而成的颜色,这个YUV是啥呢

    YUV是电视上使用的一种颜色空间,其中Y表示亮度,其实有了Y之后就能显示出影像了,就是黑白电视的效果,这里很有意思,黑色就是亮度低,白色就是亮度高,这里就是利用了人眼对颜色判断其中亮度比较明显的特效。

    有了黑白后,UV就是2个色差分量,通过UV就能显示出彩色了,这2种颜色空间可以相互转换。

    音频相关概念

    声波

    声波这个我们很熟悉了,所有声音都是通过振动来产生的声波,它有几个常用的属性。

    1. 频率,代表音调的高低,频率越高,波长越短;波长越长,声音更容易绕过障碍物,传的更远。

    2. 振幅,代表响度,就是能量大小的反应,分贝是描述响度大小的单位,分贝是无量纲,指2个相同的物理量A1(被度量量)和A0(基准量或者参考量)之比取以10为底的对数并乘以10,即N=10*lg(A1/A0)

    3. 波形,也就代表音色,不同的波形即使音调和响度相同,它的声音也是不同。

    数字音频

    将音频信号进行数字化,需要3个步骤,即采样、量化和编码。

    1. 采样,采样是在时间轴上对信号进行数字化,根据采样定理,按比声音最高频率2倍以上的频率对声音进行采样。

    2. 采样频率,表示一秒采样的次数,采样率一般为44.1kHz。

    3. 量化,量化是指在幅度轴上对信号进行数字化,比如用16比特的二进制信号来表示声音的一个采集,也就是最终的音频信号在振幅上分为65535层。

    4. 编码,按照一定的格式记录采样和量化的数字数据。

    PCM编码

    PCM是无损编码,也是音频裸数据,能达到最大程度的高保真。

    WAV编码

    WAV是一种不会进行压缩操作的编码,在PCM数据格式的前面加上44字节,分别用来描述PCM的采样率、声道数、数据格式信息。

    MP3编码

    MP3具有不错的压缩比,听感上非常接近WAV文件,音质在128Kbps上表现不错。

    AAC编码

    AAC是新一代的音频有损压缩技术,在小于128Kbps时表现优异,支持多种音频声道组合。

    总结

    这里先说这么多,到后面有更详细的概念再进行补充。

    相关推荐

    Android音视频开发:音视频基础知识到直播推流实战系列教程_哔哩哔哩_bilibili

    相关文章

      网友评论

        本文标题:音视频学习之路--一些基础概念

        本文链接:https://www.haomeiwen.com/subject/xjvrfrtx.html