视频开发学习----入门右脚

我尽量不打错别字,用词准确,不造成阅读障碍

​ 不要着急了解编码的过程或者了解图像、颜色的各种概念,个人觉得只会事倍功半,晕头转向;应该先从简单的地方入手,先了解基本流程和历史,这样在了解过程中,很多名词会多次出现,这样会帮助你消化这个名词,在后面的学习中会有效降低“短时间内有大量陌生名词和逻辑”所带来的理解难度。

一.知道音视频传输的基本流程

在这里插入图片描述
        图像信息采集后(怎么采集的先不要探究)要进行模数转换(即上图的A/D转换),作用是将模拟信号转换为数字信号,实际上,现在很多摄像机是直接输出数字信号的。之后是YUV转换—将RGB信号转为YUV信号(为什么不直接用RGB信号?因为RGB信号不利于压缩),之后才是最重要的编码,编码之后是数据封装,我理解的意思是封装成"容器格式",比如.mp4、.avi、.rmvb等,之后就是反着来一遍,解码——>格式变换,最后是播放。
        所以播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议—解封装—解码音视频—音视频同步,如果播放本地文件则可以不需要解协议这步。

  • 解协议:将流媒体协议的数据,解析为标准的、相对应的封装格式数据;因为视频在网络上流传的时候,常常采用各种流媒体协议,例如 HTTP、RTMP、MMS等,这些协议在传输数据的同时也会传输一些信令数据,里面包含对播放的控制(播放、暂停、停止)或对网络状态的描述等。解协议的过程会去掉这些信令数据而只保留音视频数据。例如RTMP协议解协议后输出FLV格式的数据。
  • 解封装:将输入封装格式的数据分离成“音频压缩编码数据+视频压缩编码数据”。封装格式很多,如MP4、MKV、RMVB、FLV、AVI等。例如:FLV格式的数据解封装后,输出H.264和AAC编码的视频和音频。
  • 解码:将压缩编码的数据解压为原始数据。解码后,视频为非压缩编码数据,如YUV420P、RGB等。音频为非压缩音频抽样数据,如PCM数据。
  • 音视频同步:根据解封装步骤获得的参数信息,同步解码出来的视频和音频,并将数据送往系统的显卡和声卡。

​        从上图也可以看出来,我们所要学习的很多知识的最终目的是为了减少传输压力,也就是减少带宽成本,所以编码就是压缩的意思,否则寥寥几张图片或短短几分钟的视频按照原始数据的计算方式是很容易上GB的,即使是“提速降费”的现代也是负担不起的,用户负担不起,运营商也负担不起。

二.了解一些基本概念

        很多音视频学习其实就是学习编解码,因为图像采集、A/D转换、YUV转换这些步骤作为应用层开发者是基本不会操作的,所以我们主要学习“压缩编码”的一些知识,这里先介绍一些基本概念,为了方便后面内容的理解。

编码方式

编码分为2种:

软件编码:常说的软编,就是使用软件进行编码计算,比较耗费CPU资源、设备容易发烫、耗电快,但是设备兼容性好,几乎可以在所有设备上进行

硬件编码:常说的硬编,这种方式设备兼容性差,但是编码性能好,完全可以支持全高清实时编码,而且省电;但是似乎Android设备的硬件编码支持的比较差,iOS比较好;此外,硬件编码动态码率控制比较难做

视频格式

我们平常笼统说的视频格式其实包含三个方面:视频编码音频编码容器格式

        我们常说的"视频文件"包含视频和音频,因此编码后至少都有2组二进制数据,并且2组二进制数据必须按照特定的方式同步起来,否则会出现经典的音、画不同步问题,所以,为了解决同步问题、多组不同类型的数组的存储和传输等问题,需要将它们按照一定格式组织起来,这种组织方式就是"容器格式",常见的"容器格式"有:.avi、.rmvb、.mp4、.mkv等,也就是常见的扩展名。

  • avi格式 通常是xvid和divx编码的视频+mp3编码的音频
  • rmvb格式 通常是RV40编码的视频和cook编码的音频
  • mp4格式 通常是H.264编码的视频和AAC编码的音频
  • mkv格式 可能是前面的各种

三.编码标准的厉史

        有一个很牛逼的组织,叫ITU(国际电信联盟),它搞了一套视频编码标准,叫H.261,后来另一个很牛逼的组织,叫ISO/IEC(这个大家应该很熟,国际标准化组织/国际电工委员会)的专家组,它也搞了一套标准,叫MPEG1。开始两家互相独立,后来不知为啥(应该是为了垄断),强强联合,成立了一个联合小组——JVT,JVT致力于新一代标准的制定,后面推出了包括H.264在内的一系列标准,称霸全球。

在这里插入图片描述

所以我们能看到,H.264就是AVC,H.265就是HEVC

        为何称霸全球?因为当时公认的,H.264是最高效的压缩编码标准,而苹果公司毅然决然抛弃了Adobe的VP6编码,选择了H.264,这个标准也就随着数亿台iPad和iPhone走进了千家万户,所以H.264很快在全球很多设备获得了支持,又因为发布的比较早,导致很多设备都只支持H.264,这就为后来Google的VP8标准推广带来了困难。
        VP8是一个类似于H.264的视频编码标准,由On2公司开发,后来该公司被Google收购;据说,VP8为了避开H.264的一些专利问题,没有采用一些算法,所以压缩效率上略逊于H.264。
        先说一下,有一种音频压缩技术叫Vorbis,被认为是和AAC同样优秀的音频压缩技术,而这个技术是免费的、开源的。
        Google基于开源容器格式Matroska(.mkv)开发了一个新的容器叫WebM,用来封装VP8编码的视频和Vorbis编码的音频。所以在涉及HTML5的讨论中,H.264通常指的是H.264/AAC/MP4,WebM通常指的是VP8/Vorbis/WebM。
        VP8被Google收购后很快就宣布永久免费,相对的,H.264是收费的,而且针对不同的设备厂家都有收费,这就使得很多厂家是更希望使用WebM的,但是就像之前说的,设备覆盖上H.264占据绝对优势,难道厂家为了兼容老设备,同时支持H.264和WebM,那不还是要交钱?而且很多东西都要跟着翻倍支持。另一方面,效率上H.264要好,所以即使有知名厂家不希望使用H.264(比如Mozilla和Opera),H.264仍然是占据了大部分的市场。

        但是VP8真的没问题吗,x264开发者之一,对VP8代码分析过,认为和H.264很像,很难确定不会有专利问题,虽然Google应该是做过专业的、大量的分析,认为VP8没有专利问题,但是由于美国的专利法律的漏洞,还有“潜艇专利”的潜在风险(指专利申请人故意推迟专利的取得、公开,等大公司使用了再突然出现,索要赔偿),VP8的专利问题一直不是很让人安心。

        与之相对的是苹果公司,因为苹果公司是H.264专利授权组织MPEG LA的成员之一,所以可以实现支出和收入抵消,同时由于苹果使用H.264的设备量很大,可以拿到最少的单位成本,最终,很多苹果的设备都只支持H.264。

        以上都是旧知识了,现在H.265和VP9也出来一段时间了,各家支持情况本人也没做调查,了解历史目的是为了熟悉一些名词,知道自己所学的东西是什么个位置,满足了这两点,我就不去探究了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值