音视频基础

我们首先来讲讲流媒体的封装格式,如MP4,FLV,常见的广电流媒体如TS格式。

再如常见的流媒体文本格式为M3U8,其内部就是封装的TS片格式。真正播放器解析的,也是其内部的TS片。

以上说的这是,都是流媒体的封装格式。  那我们常说的H264、H265是什么呢?这个是编码格式。

编码格式的意思就是,将流媒体的内容进行压缩所用到的算法。比如视频压缩,常用的H264编码,就是用H264算法进行压缩大小。音频就是用ACC算法进行压缩。

 一部片源,我们解码的时候,首先通过封装格式的格式头,去找到一些信息。 然后就进行每一个视频编码帧与音频编码帧的解析,这个过程是两个线程去处理,一个处理视频,一个处理音频。最后音视频同步来呈现最终的结果。如下图:

 可以看到,视频编码帧通过H264解码出来的是YUV格式,一般为YUV420或者YUV420P。再转成RGB进行显示。 这个是解码过程。编码过程就刚好相反,手机采集的视频信息最初为NV21,转再码为YUV格式,再通过H264来进行编码。  音频文件也是相同的逻辑,片源的解码用aac算法解码成PCM原始音频,再进行播放,编码过程则相反。

下图为YUV数据对比图


以下是YVU与RGB的公式的转换。ffmpeg中已经有了这些公式的接口。



GOP即Group of picture(图像组),指两个I帧之间的距离。GOP可以理解为一个视频段。里面包含了这个视频段的完整信息。先讲讲IPB帧。

I帧为关键帧,包含了帧的完整信息,P帧为预测编码图像帧,就是说这一帧的信息是跟他前一帧的信息有关,若前一帧信息丢失,则P帧信息就会出问题。B帧为双向预测编码图像帧,跟前后的帧都有关系,所以说B帧的压缩是最高的,本身的信息都分散到了前后。

我们先看看图中的解码顺序,这里先解出了I帧,随后的两个B帧都需要前后信息,到第4个P帧的时候,需要前一帧信息,注意,这里的前一帧,是指的前一个已经解析出的最近的帧,故这里指的是I帧而不是B帧。 到第4个P帧解码完成后,再开始解析第2个B帧,此时的后一帧,也不是指第3个B帧,而是指离的最近的已经解析出的P帧,故解码顺序为1342. 

可以看出,B帧跟后面的一帧是有关系的。这意味着,帧的播放顺序和解析顺序并不一致。因此,在现实的播放流程中,总是需要先缓冲一部份帧,才能流畅的播放。

DTS:Decode Time Stamp,解码时间戳

PTS:Presentation Time Stamp ,展示时间戳

可以看出,DTS跟解码顺序是一样的,PTS其实就是帧的排列顺序,当没有B帧时,这两时间戳的值是完全一样的。 

DTS的作用在,主要是标识读入内存中的bit流在什么时候开始送入解码器中进行解码。 

PTS作用于在音视频同步的时候采用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • [TOC] 音视频&流媒体 是什么促使我要写这一篇音视频入门文章?那是因为和一妹子打赌码率的概念,结果输了;对一个...
    AllenWu阅读 10,460评论 1 24
  • 今天早上一个好友开的饭团邀请我做特邀嘉宾。接触她的这段时间,我知道她身边没有“大咖”云集营,那绝对也是“二咖”的集...
    安心悦舍阅读 4,716评论 0 2
  • 今天中级班结业,鼓足了前半生力气终于在群里做了一个小小的讲演 虽然简短,却是我用心感受的成果,谢谢所有支持我的人!...
    丢掉果儿阅读 1,243评论 1 2
  • 1 每次带二宝去陪大宝上课,我总是会想,如果没有二宝,我肯定会在那里安安静静地看书。终于,有这么一个机会,二宝被爸...
    塔塔西城阅读 1,747评论 3 1
  • 张小云小的时候曾经是班里的霸王,现在却不太爱说话了,我不是他最好的朋友,但既然接受了他父母的请求,也该和他一起聊聊...
    十有九五阅读 4,940评论 2 5

友情链接更多精彩内容