播放器的一些基础知识

这里在看视频播放器的教程之前,我想先需要做一些基础知识准备吧.网上搜了一篇不是很多的

http://www.emsym.com/blog/?p=1352

下面自己来写一写笔记(百度了一些不太懂的东西,批注在括号里面,后面需要用到的一些基础知识,我在学到后面之后也会在第一篇日志上补上):

ES流:基本码流,包含视频\音频或数据的连续码流

PES流:打包的基本码流,将基本的码流ES流根据需要分层长度不等的数据包,并加上包头~~

TS流:传输流,由固定长度为188字节的包组成,含有独立时基(显示时间的基本单位)的一个或多个program,一个program又可以有包含多个视频,音频,和文字信息的ES流。

封装:就是捆绑打包,将画面视频文件和音轨文件打包在一起,并按照一定规则建立排序和索引,便于播放器或播放软件来索引播放


下面这张图,觉得整个流程介绍的很清晰···


1.access访问:这里是接受,获取,得到数据流

2.demux 解复用:分离合在一起的音频和视频或者是字幕

3.decode解码:音频视频的解码

4.output输出:分为音频视频的输出

demux部分:

音频视频在制作的时候实际上是独立编码的,互相分离,但是为了传输的方便,必须要用某种方式合起来,这就有了各种封装格式,例如RM/AVI/MOV

这个部分,用来解析TS流,把混在一起的音频视频流分开,分别送往音频解码和视频解码

decode部分:

影像在录制后,原始的音频视频都是占用大量的空间(PS:怪得不我们原来竞赛小组做演讲视频的时候几分钟的视频居然做了10多个G~~),而且是冗余度较高的数据。因此,通常会在制作的时候就会进行某种压缩。这就是传说中的音频视频编码格式。音视频解码器的作用就是把这些压缩了的数据还原成原始的音视频数据。当然,编码解码过程基本上都是有损的。

那播放器是如何实现视频一帧一帧的播放呢?(PS:一帧应该指的就是一副静态画面)

一般在内存中将压缩的视频帧依次解码出来,然后送到显卡的显存就OK了

如果解一帧的时间小于帧与帧之间的正常间隔,就能流畅的播放了。

每帧的播放是靠PTS来控制的,解码器解完每幅图像,都会给出该图像的PTS(PTS没在网上查出来,感觉就像给时间戳之类的东西吧~),video rebderer就能按照图像的PTS来安排显示

于此同时,别忘了音频和视频在demux之后是独立的,这就需要一套机制把他们同步起来,同时我们需要有一套机制来控制速度,暂停,停止,跳进,获取各种媒体信息、设置属性等鞥。这些也就是同步控制机制来完成的事情(基于时间戳)


简略来说,就是

以音频时间为主,声音图象交错发送

视频解码时,按当前播放时间找到对应的视频帧(假设,一个音频包有N个图象,即一个音频包完成的过程中按帧率显示图象)





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值