美文网首页
Daily AVFoundation - 视频基础

Daily AVFoundation - 视频基础

作者: Tel_小超 | 来源:发表于2021-09-03 15:43 被阅读0次

    视频

    • 什么是视频?
      视频其实就是由很多张图片,时间间隔很小的连续展示出来,人们就觉得画面中的人物在动,这就是视频。

    • 视频的实质就是N多张图片的集合。那每张图片和帧又有什么关系呢?
      事实上,如果一视频里面的图片,我们原封不动的全部存起来,空间会很大很大很大,但是如果通过一定的算法,把每一张图片压缩一下,变成帧。再把帧连起来变成流,再把不同的流放到某个容器里面,这就是我们平常看见的电影文件了.

    关于视频的一些概念

    视频文件格式

    视频文件格式是指视频保存的一种格式,视频是电脑中[多媒体系统]中的重要一环。为了适应储存视频的需要,人们设定了不同的视频文件格式来把视频和音频放在一个文件中,以方便同时回放。

    视频文件格式有不同的分类,如:

    • 微软视频 :[wmv]、[asf]、[asx]
    • Real Player :[rm]、 [rmvb]
    • MPEG视频 :[mp4]
    • 手机视频 :[3gp]
    • Apple视频 :[mov]、[m4v]
    • 其他常见视频:[avi]、[dat]、[mkv]、[flv]、[vob]等

    为什么会有这么多的视频文件格式?

    封装格式
    封装格式(也叫容器),就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中,也就是说仅仅是一个外壳,或者大家把它当成一个放视频轨和音频轨的文件夹也可以。说得通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗,或者一个锅,用来盛放饭菜的容器。

    封装格式与编码方式的对应

    • AVI:可用[MPEG-2], DIVX, XVID, WMV3, WMV4, WMV9, H.264
    • WMV:可用WMV3, WMV4, WMV9
    • RM/[RMVB]:可用RV40, RV50, RV60, RM8, RM9, RM10
    • MOV:可用MPEG-2, MPEG4-ASP([XVID]), H.264
    • MKV:可用所有[视频编码]方案

    常见格式简介

    • AVI
      AVI:比较早的AVI是Microsoft开发的。其含义是Audio Video Interactive,就是把视频和音频编码混合在一起储存。AVI也是最长寿的格式,已存在10余年了,虽然发布过改版(V2.0于1996年发布),但已显老态。[AVI格式]上限制比较多,只能有一个视频轨道和一个音频轨道(有非标准[插件]可加入最多两个音频轨道),还可以有一些附加轨道,如文字等。AVI格式不提供任何控制功能。副档名:[avi]

    • WMV
      WMV(Windows Media Video)是[微软公司]开发的一组数位视频编解码格式的通称,ASF(Advanced Systems Format)是其[封装格式]。ASF封装的WMV档具有“数位版权保护”功能。副档名:[wmv]/[asf]、wmvhd

    • MPEG
      [MPEG格式]:MPEG(Moving Picture Experts Group),是一个[国际标准组织](IS0)认可的媒体封装形式,受到大部份机器的支持。其储存方式多样,可以适应不同的应用环境。MPEG-4档的档容器格式在Layer 1(mux)、14([mpg])、15(avc)等中规定。MPEG的控制功能丰富,可以有多个视频(即角度)、[音轨]、字幕([位图]字幕)等等。MPEG的一个简化版本3GP还广泛的用于准3G手机上。副档名:dat(用于DVD)、[vob]、mpg/[mpeg]、[3gp]/3g2(用于手机)等

    • MPEG1
      MPEG1:是一种 MPEG(运动图像专家组)多媒体格式,用于压缩和储存音频和视频。 用于计算机和游戏,MPEG1 的分辨率为 352 x 240 象素,[帧速率]为每秒 25 帧(PAL)。 MPEG1 可以提供和租赁录像带一样的[视频质量]。

    • MPEG2
      MPEG2: 是一种 MPEG(运动图像专家组)多媒体格式,用于压缩和储存音频及视频。供广播质量的应用程序使用,MPEG 2 定义了支持添加封闭式字幕和各种语言通道功能的协议。

    • DivX/xvid
      DivX是一项由DivXNetworks公司发明的,类似于MP3的数字多媒体[压缩技术])。DivX基于MPEG-4,可以把MPEG-2格式的多媒体[文件压缩]至原来的10%,更可把[VHS格式]录像带格式的文件压至原来的1%。通过DSL或CableModen等宽带设备,它可以让你欣赏全屏的高质量数字电影。同时它还允许在其他设备(如数字电视、蓝光播放器、PocketPC、数码相框、手机)上观看对机器的要求不高,这种编码的视频CPU只要是300MHz以上、64M内存和一个8M显存的显卡就可以流畅地播放了。采用DivX的文件小,图像质量更好,一张CD-ROM 可容纳120min的质量接近DVD的电影。

    • DV
      DV:(数字视频)通常用于指用数字格式捕获和储存视频的设备(诸如便携式摄像机)。有DV 类型I 和 DV 类型II两种AVI文件
      DV类型I:数字视频 AVI 文件包含原始的视频和音频信息。 DV 类型 I 文件通常小于 DV 类型 II 文件,并且与大多数 A/V 设备兼容,诸如 DV 便携式摄像机和录音机。
      DV类型II:数字视频 AVI 文件包含原始的视频和音频信息,同时还包含作为 DV 音频副本的单独音轨。 DV 类型 II 比 DV 类型 I 兼容的软件更加广泛,因为大多数使用 AVI 文件的程序都希望使用单独的音轨。

    • MKV
      Matroska是一种新的多媒体[封装格式],这个封装格式可把多种不同编码的视频及16条或以上不同格式的音频和语言不同的字幕封装到一个Matroska Media档内。它也是其中一种一种[开放源代码]的多媒体封装格式。Matroska同时还可以提供非常好的交互功能,而且比MPEG的方便、强大。副档名:[mkv]

    常用视频格式&对应文件格式

    视频封装格式 视频文件格式
    AVI(Audio Video Interactive) AVI
    WMV(Windows Media Video) WMV
    MPEG(Moving Picture Experts Group) MPG MPEG VOB DAT 3GP MP4
    Matroska MKV
    Real Video RM RMVB
    AVI(Audio Video Interactive) AVI
    QuickTime File Formart MOV
    Flash Video FLV

    视频编解码方式

    视频编码

    视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。视频流传输中最为重要的编解码标准有国际电联的H.261、H.263、H.264,运动静止图像专家组的M-JPEG和国际标准化组织运动图像专家组的MPEG系列标准,此外在互联网上被广泛应用的还有Real-Networks的RealVideo、微软公司的WMV以及Apple公司的QuickTime等。

    1.为什么要进行视频编码?

    • 未经压缩的数字视频的数据量巨大
    • 存储困难
      一张DVD只能存储几秒钟的未压缩数字视频。
    • 传输困难
      1兆的带宽传输一秒的数字电视视频需要大约4分钟。

    2.为什么可以压缩?

    去除冗余信息

    • 空间冗余:图像相邻像素之间有较强的相关性
    • 时间冗余:视频序列的相邻图像之间内容相似
    • 编码冗余:不同像素值出现的概率不同
    • 视觉冗余:人的视觉系统对某些细节不敏感
    • 知识冗余:规律性的结构可由先验知识和背景知识得到

    3. 数据压缩分类

    • 无损压缩(Lossless)
      压缩前解压缩后图像完全一致X=X'
      压缩比低(2:1~3:1)
      例如:Winzip,JPEG-LS
    • 有损压缩(Lossy)
      压缩前解压缩后图像不一致X≠X'
      压缩比高(10:1~20:1)
      利用人的视觉系统的特性
      例如:MPEG-2,H.264/AVC,AVS

    4. 视频编码标准

    编码标准作用:

    • 兼容:
      不同厂家生产的编码器压缩的码流能够被不同厂家的解码器解码
    • 高效:
      标准编解码器可以进行批量生产,节约成本。

    主流的视频编码标准:

    • MPEG-2
    • MPEG-4 Simple Profile
    • H.264/AVC
    • AVS
    • VC-1

    标准化组织:

    • ITU:International Telecommunications Union
    • VECG:Video Coding Experts Group
    • ISO:International Standards Organization
    • MPEG:Motion Picture Experts Group

    常见视频编码方式

    • H.26X 系列,由国际电传视讯联盟远程通信标准化组织(ITU-T)主导,包括 H.261、H.262、H.263、H.264、H.265

      1. H.261,主要用于老的视频会议和视频电话系统。是第一个使用的数字视频压缩标准。实质上说,之后的所有的标准视频编解码器都是基于它设计的。
      2. H.262,等同于 MPEG-2 第二部分,使用在 DVD、SVCD 和大多数数字视频广播系统和有线分布系统中。
      3. H.263,主要用于视频会议、视频电话和网络视频相关产品。在对逐行扫描的视频源进行压缩的方面,H.263 比它之前的视频编码标准在性能上有了较大的提升。尤其是在低码率端,它可以在保证一定质量的前提下大大的节约码率。
      4. H.264,等同于 MPEG-4 第十部分,也被称为高级视频编码(Advanced Video Coding,简称 AVC),是一种视频压缩标准,一种被广泛使用的高精度视频的录制、压缩和发布格式。该标准引入了一系列新的能够大大提高压缩性能的技术,并能够同时在高码率端和低码率端大大超越以前的诸标准。
      5. H.265,被称为高效率视频编码(High Efficiency Video Coding,简称 HEVC)是一种视频压缩标准,是 H.264 的继任者。HEVC 被认为不仅提升图像质量,同时也能达到 H.264 两倍的压缩率(等同于同样画面质量下比特率减少了 50%),可支持 4K 分辨率甚至到超高画质电视,最高分辨率可达到 8192×4320(8K 分辨率),这是目前发展的趋势。
    • MPEG 系列,由国际标准组织机构(ISO)下属的运动图象专家组(MPEG)开发。

      1. MPEG-1 第二部分,主要使用在 VCD 上,有些在线视频也使用这种格式。该编解码器的质量大致上和原有的 VHS 录像带相当。
      2. MPEG-2 第二部分,等同于 H.262,使用在 DVD、SVCD 和大多数数字视频广播系统和有线分布系统中。
      3. MPEG-4 第二部分,可以使用在网络传输、广播和媒体存储上。比起 MPEG-2 第二部分和第一版的 H.263,它的压缩性能有所提高。
      4. MPEG-4 第十部分,等同于 H.264,是这两个编码组织合作诞生的标准。

    视频编解码方式视频封装格式 的关系

    可以把「视频封装格式」看做是一个装着视频、音频、「视频编解码方式」等信息的容器。一种「视频封装格式」可以支持多种「视频编解码方式」,比如:QuickTime File Format(.MOV) 支持几乎所有的「视频编解码方式」,MPEG(.MP4) 也支持相当广的「视频编解码方式」。当我们看到一个视频文件名为 test.mov 时,我们可以知道它的「视频文件格式」是 .mov,也可以知道它的视频封装格式是 QuickTime File Format,但是无法知道它的「视频编解码方式」。那比较专业的说法可能是以 A/B 这种方式,A 是「视频编解码方式」,B 是「视频封装格式」。比如:一个 H.264/MOV 的视频文件,它的封装方式就是 QuickTime File Format,编码方式是 H.264

    直播/小视频中的编码格式

    视频编码格式

    • 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以下的音频编码,多用于视频中的音频轨的编码

    H264码流

    组成H264码流的结构中 包含以下几部分 ,从大到小排序依次是

    H264视频序列,图像,片组,片,NALU,宏块 ,像素。
    类似 地球 国家 城市 镇 村落
    
    image.png
    H264编码分层
    • NAL层:(Network Abstraction Layer,视频数据网络抽象层): 它的作用是H264只要在网络上传输,在传输的过程每个包以太网是1500字节,而H264的帧往往会大于1500字节,所以要进行拆包,将一个帧拆成多个包进行传输,所有的拆包或者组包都是通过NAL层去处理的。
    • VCL层:(Video Coding Layer,视频数据编码层): 对视频原始数据进行压缩
    H264的传输
    • H264是一种码流 类似与一种不见头,也不见尾的一条河流。如何从和流中取到自己想要的数据呢,在H264的标砖中有这样的一个封装格式叫做"Annex-B"的字节流格式。 它是H264编码的主要字节流格式。几乎市面上的编码器是以这种格式进行输出的。起始码0x 00 00 00 01 或者 0x 00 00 01 作为分隔符。


      NAL Unit
    编码结构
    编码结构

    切片头:包含了一组片的信息,比如片的数量,顺序等等

    H264码流分层结构图
    H264码流分层结构图
    颜色模型

    颜色模型指的是某个[三维]颜色空间中的一个可见光子集,它包含某个色彩域的所有色彩。一般而言,任何一个色彩域都只是可见光的子集,任何一个颜色模型都无法包含所有的可见光。常见的颜色模型有RGB CIECMY/CMYK、(HSK NTSC、YcbCr、HSV 等)

    RGB颜色模型

    RGB颜色模型

    在 RGB 模型中每种颜色需要 3 个数字,分别表示 R、G、B,比如 (255, 0, 0) 表示红色,通常一个数字占用 1 字节,那么表示一种颜色需要 24 bits。那么有没有更高效的颜色模型能够用更少的 bit 来表示颜色呢?

    现在我们假设我们定义一个「亮度(Luminance)」的概念来表示颜色的亮度,那它就可以用含 R、G、B 的表达式表示为:

    Y = kr*R + kg*G + kb*B
    

    Y 即「亮度」,kr、kg、kb 即 R、G、B 的权重值。

    这时,我们可以定义一个「色度(Chrominance)」的概念来表示颜色的差异:

    Cr = R – Y
    Cg = G – Y
    Cb = B – Y
    

    Cr、Cg、Cb 分别表示在 R、G、B 上的色度分量。上述模型就是 YCbCr 颜色模型基本原理。

    YCbCr 是属于 YUV 家族的一员,是在计算机系统中应用最为广泛的颜色模型,就比如在本文所讲的视频领域。在 YUV 中 Y 表示的是「亮度」,也就是灰阶值,U 和 V 则是表示「色度」。

    YUV 的关键是在于它的亮度信号 Y 和色度信号 U、V 是分离的。那就是说即使只有 Y 信号分量而没有 U、V 分量,我们仍然可以表示出图像,只不过图像是黑白灰度图像。在YCbCr 中 Y 是指亮度分量,Cb 指蓝色色度分量,而 Cr 指红色色度分量。

    现在我们从 ITU-R BT.601-7 标准中拿到推荐的相关系数,就可以得到 YCbCr 与 RGB 相互转换的公式

    
    Y = 0.299R + 0.587G + 0.114B
    Cb = 0.564(B - Y)
    Cr = 0.713(R - Y)
    R = Y + 1.402Cr
    G = Y - 0.344Cb - 0.714Cr
    B = Y + 1.772Cb
    
    

    这样对于 YCbCr 这个颜色模型我们就有个初步认识了,但是我们会发现,这里 YCbCr 也仍然用了 3 个数字来表示颜色啊,有节省 bit 吗?为了回答这个问题,我们来结合视频中的图像和图像中的像素表示来说明

    • 假设图片有如下像素组成


      pix
    • 一副图片就是一个像素阵列.每个像素的 3 个分量的信息是完整的,YCbCr 4:4:4。


      4:4:4
    • 上图,做了更多的省略,但是对图片质量的影响却不会太大.YCbCr4:2:0
    4.2.0

    相关文章

      网友评论

          本文标题:Daily AVFoundation - 视频基础

          本文链接:https://www.haomeiwen.com/subject/tozhwltx.html