AV Foundation框架学习(二)

1.4 了解数字媒体

1.4.1数字媒体采样

对媒体进行数字化主要有两种方式。第一时间采样,这种方法捕捉一个信号周期内的变化。比如当你记录一个音频时,在录制期间你所有的音高变化和声调变化都会被捕捉下来。第二空间采样,一般用在图片数字化和其他可视化媒体内容数字化的过程中。空间采样包含对一幅图片在一定分辨率之下捕捉其亮度和色度,进而创建该图片的像素点数据所构成的数字化结果。

1.4.2数字音频

声音是由物体振动产生的波,通过介质(如空气)传播并能被人或动物听觉器官感知的波动现象,其本质是物体振动导致介质(如空气)振动,使周围介质(空气)产生疏密变化,形成了疏密相间的纵波。

声音有三个重要的特性,分别是音调、响度、音色。音调是指声音的高低,有频率决定,频率越高音调越高(频率单位是Hz,赫兹),人耳听觉范围是20Hz~20000Hz,20Hz以下成为次声波,20000Hz以上成为超声波;响度是人主观上感觉声音的大小(俗称音量),由振幅和人离声源的距离决定,振幅越大响度越大,人和声源的距离越小,响度越大;音色又称音频,波形决定了声音的音色。

数字音频是一种利用数字化手段对声音进行录制、存放、编辑、压缩或播放的技术,因为声音可以通过傅里叶变换,分解成不同频率不同强度的正弦波叠加,为模拟信号转换成电信号,用0、1形式存储在计算机上提供了可能。

数字音频涉及到两个重要的变量,一个是采样的频率,指周期内采集数据转成电信号存储,周期越短,频率越高,声音还原越真实,常用的采样频率有20.5kHz、44.1kHz、48kHz;另外一个是量化位数,即采样后数据存储的最大位数,计算机存储的数据是有限的,对采集后的数据不可能无限的精确,需要舍与得,常用的量化位数有8位、16位、32位。

对声音进行数字化,如果不作任何压缩保留原始数据,这样做需要很大的空间,比如一个44.1kHz、16位LPCM音频文件每分钟可能要占用10MB内存空间。因此业界对数字音频压缩推出了许多的音频标准格式,以下介绍常用的几种:

  • WAV:微软开发的音频格式,支持音频压缩,但被经常用来存放未经压缩的无损音频
  • MP3:常用的音频文件压缩技术,用来大幅度降低音频的数量
  • AAC:目前最火的格式之一,相对于MP3,音质更加,文件更小,理想情况下可压缩至原文件的十八分之一
  • APE:无损压缩,可将文件压缩为原来的一半
  • FLAC:无所压缩

因为音频的原始数据大小一般不适合直接传入,比如原始大小一般可以按照采样率 * 声道数 * 样本格式 去计算,假设前面那个 MOV 的音频采样率是 44100 、样本格式是 16 bit 、单声道、24 秒,那么它原始音频大小应该是

44100 * 16 * 1 * 24 / 8 ≈ 2MB

而实际将音频信息提取出来的大小,大概只有 200 多K,这就是音频编码的作用。

1.4.3数字媒体压缩

一般情况下,视频流从加载都准备播放是需要经过解协议、解封装、解编码这样的过程,其中协议指的就是流媒体协议;封装是的是视频的封装格式;编码又分为视频编码和音频编码。

视频封装协议指的是我们常见的 MP4 、AVI 、RMVB 、MKV、TS、FLV 等常见后缀格式,它们所表示的就是多媒体的封装协议,就是在传输过程中把音频和视频打包都一起的封装,所以播放前是需要把这部分内容解开,提取出对应音频编码和视频编码。

视频编码

视频编码指的就是画面图像的编码压缩方式,一般有 H263、H264、HEVC(H265)、MPEG-2 、MPEG-4 等,其中H264 是目前比较常见的编码方式。

通常情况下我们理解的画面是 RGB 组合出来,而目前视频领域可能更多使用 YUV 格式,其中 Y 表示的是亮度(灰度),而 U 和 V表示的是色度(饱和度)。

YUV 是对 RGB 的特殊处理和叠加来获取颜色,比如 YUV420 可以理解对色度以 2:1 的抽样率进行存储,然后亮度透过色度来显示画面,更多 YUV 的这里就不展开讨论,而为什么使用 YUV 其中有一点因素就是为了兼容以前的黑白电视。
为什么不直接用原始 YUV ?这里假设上面的 MOV 视频直接使用 YUV420 的格式,那么一帧的大小就会是:

1080 * 1920 * 1 + 1080 * 1920 * 0.5 = 2.9MB

如果在这个基础上,算上帧率(30)和一个视频的时长(一小时),那一部视频原始大小就会是天文数字,这样的情况明显不符合网络传输,所以才有了视频编码用于压缩图像。

在视频压缩里,又有几个概念需要知道,比如:

  • 1、IPB 帧是一种常见的帧压缩方法,其中 I 帧属于关键帧是每个画面的参考帧;P 帧是前向预测帧;B 帧是双向预测帧。简单来说就是 I 帧自己就可以得到一个完整画面,而 P 帧需要前面的 I 帧或者 P 帧来帮助解码得到一个完整画面,而 B 帧则需要前面的 I/P 帧或者后面的 P 帧来协助形成一个画面。
所以 I 帧是很关键的存在,压缩 I 帧就可以很容易压制掉空间的大小,而压缩 P/B 帧可以压缩掉时间上的冗余信息 。所以在视频 seek 的时候,I 帧很关键,如果视频 seek 之后发生往前的跳动,那很可能就是你的视频压缩得太厉害了。
  • 2、还有一个叫 IDR 帧的概念,因为 H264 采用的是多帧预测,导致 I 帧不能作为独立的观察条件,所以多出一个叫 IDR 帧的特殊 I 帧用于参考,IDR 帧最关键的概念就是:在解码器过程中一旦收到 IDR 帧,就会立即清空参考帧缓冲区,并将IDR帧作为被参考帧。
  • 3、在视频解码里还有一个叫 DTS(Decoding Time Stamp) 和 PTS(Presentation Time Stamp)的存在,DTS主要用于视频的解码,PTS主要用于在解码阶段对视频进行同步和输出。
因为视频包里面数据解码不是连续的,而是需要通过解码数据源得到的 DTS,才能 决定了包应该在什么时候被解码,而得到的PTS 决定了解码后的图片什么时候被绘制。
  • 4、GOP(Group Of Picture)就是两个 I 帧之间的距离,一般 GOP 设置得越大,画面的效果就会越好,到那时需要解码的时间就会越长。 所以如果码率固定而 GOP 值越大,P/B帧 数量会越多,画面质量就会越高。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值