音视频学习从零到整-了解视频编码与VideoToolBox框架

音视频学习从零到整(1)
音视频学习从零到整(2)
音视频学习从零到整(3)

一..了解VideoToolBox 硬编码

VideoToolBox 官方文档

在iOS4.0,苹果就已经支持硬编码.但是硬编码在当时属于私有API. 不提供给开发者使用
在2014年的WWDC大会上,iOS 8.0 之后,苹果开放了硬解码和硬解码的API。就是VideoToolbox.framework的API。VideoToolbox 是一套纯C语言API。其中包含了很多C语言函数

VideoToolBox实际上属于低级框架,它是可以直接访问硬件编码器和解码器.它存在于视频压缩和解压缩以及存储在像素缓存区中的数据转换提供服务.

硬编码的优点:提高性能、增加效率、延长电量的使用

这个框架在音视频项目开发中,也是会要频繁使用的.如果大家有想法去从事音视频的开发.那么这个框架将会是你学习的一个重点.

二.了解视频

作为开发者和产品测试之间的斡旋.是不可避免的.这是咱们在做开发过程中,但还是 要去思考.到底是需求不合理还是我们对这个需求的没有把握.

在前面我说过,5G时代的到来,势必会对移动互联网的冲击将会是最刺激的.为何?一旦网络速度+设备的运行速度不受限制时,设想移动设备的暂时不可替代性是不是又更加的明显了.至少在目前为止,没有一款硬件可以替代手机设备在用户的地位.

那我们来了解一下视频的常规知识.只有在了解视频的本质,你才有可能面对需求应对自如.


Snip20180724_98.png

2.1 视频的构成:

  • 图像
  • 音频
  • 元信息

图像: 视频内容本身就是一帧一帧的图片构成.人眼只要1秒钟连续播放16张以上的图片,就会认为这是一段连贯的视频.这种物理现象叫视觉暂留.

音频: 视频一定是由音频+图像内容构成的.所以音频在视频中是单独的一个部分.针对这一块我们需要单独编码的.

元信息:元信息其实就是描述信息的信息.用于描述信息的结构\语义\用途\用法等.比如视频元信息就包含了视频的具体信息,比如编码格式,分辨率等等.

2.2 视频中的编码格式

  • 视频编码格式

    • H264编码的优势:
      • 低码率
      • 高质量的图像
      • 容错能力强
      • 网络适应性强
    • 总结: H264最大的优势,具有很高的数据压缩比率,在同等图像质量下,H264的压缩比是MPEG-2的2倍以上,MPEG-4的1.5~2倍.
    • 举例: 原始文件的大小如果为88GB,采用MPEG-2压缩标准压缩后变成3.5GB,压缩比为25∶1,而采用H.264压缩标准压缩后变为879MB,从88GB到879MB,H.264的压缩比达到惊人的102∶1
  • 音频编码格式:

    • AAC是目前比较热门的有损压缩编码技术,并且衍生了LC-AAC,HE-AAC,HE-AAC v2 三种主要编码格式.

      • LC-AAC 是比较传统的AAC,主要应用于中高码率的场景编码(>= 80Kbit/s)
      • HE-AAC 主要应用于低码率场景的编码(<= 48Kbit/s)
    • 优势:在小于128Kbit/s的码率下表现优异,并且多用于视频中的音频编码

    • 适合场景:于128Kbit/s以下的音频编码,多用于视频中的音频轨的编码

2.3 容器(视频封装格式)

封装格式:就是将已经编码压缩好的视频数据 和音频数据按照一定的格式放到一个文件中.这个文件可以称为容器. 当然可以理解为这只是一个外壳.

通常我们不仅仅只存放音频数据和视频数据,还会存放 一下视频同步的元数据.例如字幕.这多种数据会不同的程序来处理,但是它们在传输和存储的时候,这多种数据都是被绑定在一起的.

  • 常见的视频容器格式:
    • AVI: 是当时为对抗quicktime格式(mov)而推出的,只能支持固定CBR恒定定比特率编码的声音文件
    • MOV:是Quicktime封装
    • WMV:微软推出的,作为市场竞争
    • mkv:万能封装器,有良好的兼容和跨平台性、纠错性,可带外挂字幕
    • flv: 这种封装方式可以很好的保护原始地址,不容易被下载到,目前一些视频分享网站都采用这种封装方式
    • MP4:主要应用于mpeg4的封装,主要在手机上使用。

三.视频压缩的可能性

视频压缩,该从那几个方向去进行数据的压缩了? 实际上压缩的本质都是从冗余信息开始出发压缩的. 而视频数据之间是有极强的相关性.也就是这样会产生大量的冗余信息.这样的冗余包括空间上的冗余信息和时间上的冗余信息.

  • 使用帧间编码技术可以去除时间上的冗余信息,具体包括如下
    • 运动补偿: 运动补偿是通过先前的局部图形来预测,补偿当前的局部图像.它是减少帧序列冗余信息很有效的方法.
    • 运动表示: 不同区域的图像需要使用不同的运动矢量来描述运动信息
    • 运动估计: 运动估计就是从视频序列中抽取运动信息的一整套技术.

3.1 编码概念

IPB帧
视频压缩中,每帧代表着一副静止的图像.而进行实际压缩时,会采用各种算法以减少数据的容量.其实IPB帧是最常用的一种方式:

  • I帧: 帧内编码帧(intra picture),I帧通常是每个GOP(MPEG所使用的一种视频压缩技术)的第一帧.经过适度的压缩.作为随机访问的参考点,可以当做静态图像.I帧可以看做一个图像经过压缩后的产物.I帧压缩可以得到6:1的压缩比而不会产生任何可察觉的模糊现象.I帧压缩去除了视频空间的冗余信息.
  • P帧: 前后预测编码帧(predictive-frame),通过将图像序列中前面已编码帧的时间冗余信息充分去除来压缩传输数据量的编码图像.
  • B帧: 双向预测编码帧(bi-directional interpolated prediction frame),既要考虑源图像序列前面已编码帧,又要顾及源图像序列后面的已编码帧之间的时间冗余信息,来压缩传输数据量的编码图像.

读者角度解读

如果从编码的角度,获取我们顺序思考会存在难度.但如果我们从解码的角度来思考就显得不是那么不可理解了.

  • I帧,自身可以通过视频解码算法解压成一张单独的完整的视频画面.所以I帧去掉的是视频帧在空间维度上的冗余信息.
  • P帧,需要参考前面的一个I帧或P帧解码成一个完整的视频画面
  • B帧,需要参考前面的一个I帧或者P帧以及后面的一个P帧来生成一个完整的视频画面.
  • 所以,P和B帧去掉的视频帧在时间上维度上的冗余信息.

3.2 解码中PTS 与 DTS

DTS(Decoding Time Stamp),主要用于视频的解码;
PTS(Presentation Time Stamp),主要用于解码节点进行视频的同步和输出.

在没有B帧的情况下,DTS和PST的输出顺序是一样的.因为B帧会打乱了解码和显示顺序.所以一旦存在B帧,PTS和DTS势必会不同.实际上在大多数编解码标准中,编码顺序和输入顺序并不一致.于是需要PTS和DST这2种不同的时间戳.

3.3 GOP概念

两个I帧之间形成的一组图片,就是GOP(Group of Picture).
通常在编码器设置参数时,必须会设置gop_size的值.其实就是代表2个I帧之间的帧数目. 在一个GOP组中容量最大的就是I帧.所以相对而言,gop_size设置的越大,整个视频画面质量就会越好.但是解码端必须从接收的第一个I帧开始才可以正确解码出原始图像.否则无法正确解码.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容

  • ### YUV颜色空间 视频是由一帧一帧的数据连接而成,而一帧视频数据其实就是一张图片。 yuv是一种图片储存格式...
    天使君阅读 3,173评论 0 4
  • 视频 视频实质:纯粹的视频(不包括音频)实质上就是一组帧图片,经过视频编码成为视频(video)文件再把音频(au...
    勇敢的_心_阅读 2,785评论 1 30
  • [TOC] 音视频&流媒体 是什么促使我要写这一篇音视频入门文章?那是因为和一妹子打赌码率的概念,结果输了;对一个...
    AllenWu阅读 4,623评论 1 25
  • 为什么要进行编码 因为未经过编码(压缩)的视频,具有极大的数据量,不利于存储,传输,实时应用. 视频编码的原理 空...
    痴人会说梦阅读 3,141评论 6 3
  • 01 中午,约了静静一起吃饭。明天,她将离开,这一别不知何时才能相见。 每次别离,内心总是有诸多不舍,在一起的时光...
    简小抒阅读 3,540评论 6 5