1.电视图像的数据率

1.1 ITU-R BT.601标准数据率

  按照奈奎斯特(Nyquist)采样理论,模拟电视信号经过采样(把连续的时间信号变成离散的时间信号)和量化 (把连续的幅度变成离散的幅度信号)之后,数字电视信号的数据量大得惊人,当前的存储器和网络都还没有足够的能力支持这种数据传输率,因此就要对数字电视信号进行压缩。为了在PAL、NTSC和SECAM彩色电视制之间确定一个共同的数字化参数,早在1982年国际无线电咨询委员会 (CCIR)就制定了演播室质量的数字电视编码标准,这就是非常有名的ITU-R BT.601标准。按照这个标准,使用4:2:2的采样格式,亮度信号Y的采样频率选择为13.5 MHz/s,而色差信号Cr和Cb的采样频率选择为6.75 MHz/s,在传输数字电视信号通道上的数据传输率就达到为270 Mb/s(兆比特/秒)
  亮度(Y):
   858样本/行×525行/帧×30帧/秒×10比特/样本 ≌ 13.5兆比特/秒(NTSC)
   864样本/行×625行/帧×25帧/秒×10比特/样本 ≌ 13.5兆比特/秒(PAL)
  Cr (R-Y):
   429样本/行×525行/帧×30帧/秒×10比特/样本 ≌ 6.8兆比特/秒(NTSC)
   429样本/行×625行/帧×25帧/秒×10比特/样本 ≌ 6.8兆比特/秒(PAL)
  Cb (B-Y):
   429样本/行×525行/帧×30帧/秒×10比特/样本 ≌ 6.8兆比特/秒(NTSC)
   429样本/行×625行/帧×25帧/秒×10比特/样本 ≌ 6.8兆比特/秒(PAL)
  总计:

    27兆样本/秒×10比特/样本 = 270兆比特/秒
实际上,在荧光屏上显示出来的有效图像的数据传输率并没有那么高,
   亮度(Y): 720×480×30×10 ≌ 104 Mb/s (NTSC)
        720×576×25×10 ≌ 104 Mb/s (PAL)
   色差(Cr,Cb):2×360×480×30×10 ≌ 104 Mb/s (NTSC)
          2×360×576×25×10 ≌ 104 Mb/s (PAL)
   总计: ~ 207 Mb/s
  如果每个样本的采样精度由10比特降为8比特,彩色数字电视信号的数据传输率就降为166 Mb/s。

2. 数据压缩算法

 电视图像本身在时间上和空间上都含有许多冗余信息,图像自身的构造也有冗余性。此外,正如前面所介绍的,利用人的视觉特性也可对图像进行压缩,这叫做视觉冗余。

电视图像压缩利用的各种冗余信息

种类

内容

目前用的主要方法

统计

空间冗余

像素间的相关性

变换编码,预测编码

特性

时间冗余

时间方向上的相关性

帧间预测,移动补偿

    图像构造冗余

图像本身的构造

轮廓编码,区域分割

    知识冗余

收发两端对人物的共有认识

基于知识的编码

    视觉冗余

人的视觉特性

非线性量化,位分配

    其他

不确定性因素

 

  MPEG-Video图像压缩技术基本方法和方法可以归纳成两个要点:
    ① 在空间方向上,图像数据压缩采用JPEG(Joint Photographic Experts Group)压缩算法来去掉冗余信息。
    ② 在时间方向上,图像数据压缩采用移动补偿(motion compensation)算法来去掉冗余信息。
 
 为了在保证图像质量基本不降低而又能够获得高的压缩比,MPEG专家组定义了三种图像:帧内图像I(intra),预测图像P(predicted)和
双向预测图像B(bidirectionally interpolated
),这三种图像将采用三种不同的算法进行压缩。

                                      MPEG专家组定义的三种图像

补充:

  视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。简单地说,I帧是关键帧,属于帧内压缩。就是和AVI的压缩是一样的。 P是向前搜索的意思。B是双向搜索。他们都是基于I帧来压缩数据。I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)。P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)。B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累~。
  从上面的解释看,我们知道I和P的解码算法比较简单,资源占用也比较少,I只要自己完成就行了,P呢,也只需要解码器把前一个画面缓存一下,遇到P时就使用之前缓存的画面就好了,如果视频流只有I和P,解码器可以不管后面的数据,边读边解码,线性前进,大家很舒服。但网络上的电影很多都采用了B帧,因为B帧记录的是前后帧的差别,比P帧能节约更多的空间,但这样一来,文件小了,解码器就麻烦了,因为在解码时,不仅要用之前缓存的画面,还要知道下一个I或者P的画面(也就是说要预读预解码),而且,B帧不能简单地丢掉,因为B帧其实也包含了画面信息,如果简单丢掉,并用之前的画面简单重复,就会造成画面卡(其实就是丢帧了),并且由于网络上的电影为了节约空间,往往使用相当多的B帧,B帧用的多,对不支持B帧的播放器就造成更大的困扰,画面也就越卡。一般平均来说,I的压缩率是7(跟JPG差不多),P是20,B可以达到50,可见使用B帧能节省大量空间,节省出来的空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。

2.1.帧内图像I的压缩编码算法

  如果电视图像是用RGB空间表示的,则首先把它转换成YCrCb空间表示的图像。每个图像平面分成8×8的图块,对每个图块进行离散余弦变换 DCT(discrete Cosine Transform)。DCT变换后经过量化的交流分量系数按照Zig-zag的形状排序,然后再使用无损压缩技术进行编码。DCT变换后经过量化的直流分量系数用差分脉冲编码DPCM(DifferentialPulse Code Modulation),交流分量系数用行程长度编码RLE(run-length encoding),然后再用霍夫曼(Huffman)编码或者用算术编码。

2.2.预测图像P的压缩编码算法

  预测图像的编码也是以图像宏块(macroblock)为基本编码单元,一个宏块定义为I×J像素的图像块,一般取16×16。预测图像P使用两种类型的参数来表示:一种参数是当前要编码的图像宏块与参考图像的宏块之间的差值,另一种参数是宏块的移动矢量。假设编码图像宏块MPI是参考图像宏块MRJ的最佳匹配块,它们的差值就是这两个宏块中相应像素值之差。对所求得的差值进行彩色空间转换,并作4:1:1的子采样得到Y,Cr和Cb分量值,然后仿照JPEG压缩算法对差值进行编码,计算出的移动矢量也要进行霍夫曼编码。

2.3.双向预测图像B的压缩编码算法

2.4.图像结构

  MPEG 编码器算法允许选择I图像的频率和位置。I图像的频率是指每秒钟出现I图像的次数,位置是指时间方向上帧所在的位置。一般情况下,I图像的频率为2。 MPEG编码器也允许在一对I图像或者P图像之间选择B图像的数目。I图像、P图像和B图像数目的选择依据主要是根节目的内容。例如,对于快速运动的图像,I图像的频率可以选择高一些,B图像的数目可以选择少一点;对于满速运动的图像I图像的频率可以低一点,而B图像的数目可以选择多一点。此外,在实际应用中还要考虑媒体的速率。
  一个典型的I、P、B图像安排如图所示。编码参数为:帧内图像I的距离为N=15,预测图像(P)的距离为M=3。


MPEG电视帧编排

  I、P和B图像压缩后的大小如表所示,单位为比特。从表中可以看到,I帧图像的数据量最大,而B帧图像的数据量最小。

MPEG三种图像的压缩后的典型值(比特)

图像类型

I

P

B

平均数据/帧

MPEG-1 CIF 格式(1.15 Mb/s)

150 000

50 000

20 000

38 000

MPEG-2 601 格式(4.00 Mb/s)

400 000

200 000

80 000

130 000


流媒体 6——MPEG电视的更多相关文章

  1. 流媒体 5——MPEG声音

    1. 听觉系统的感知特性: MPEG声音的数据压缩和编码不是依据波形本身的相关性和模拟人的发音器官的特性,而是利用人的听觉系统的特性来达到压缩声音数据的目的,这种压缩编码称为感知声音编码. 许多科学工 ...

  2. M-JPEG和MPEG-4的区别 M-JPEG VS MPEG

    http://blog.sina.com.cn/s/blog_4b357b300100gre9.html M-JPEG VS MPEG http://blog.csdn.net/bluesky_sun ...

  3. 《周四橄榄球之夜》流媒体视频拆解:Twitch VS Amazon Prime

    文 / Phil Cluff 译 / 王月美 原文链接:https://mux.com/blog/thursday-night-football-streaming-technology-showdo ...

  4. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器功能简介---实时数据统计报表、视频文件上传、点播、分享、集成

    熟悉EasyDSS流媒体服务器的小伙伴应该都知道,EasyDSS通过将EasyRTMP推流的直播流进行直播转码.智能处理.视频分发,再通过 CDN 分发节点分发到终端播放 SDK为观众播放高清低延时的 ...

  5. 流媒体知识 wiki

    媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等.最近因为项目的关系,需要理清媒 ...

  6. Live555流媒体服务器编译(Windows下)

    最近在回顾之前做过的相关项目,其中包括live555流媒体服务器相关,今天先把live555开源框架在Windows下的编译方法记录一下. live555是一套使用使用开放的标准协议(RTP/RTCP ...

  7. Windows Server 2003从入门到精通之Windows Media Server流媒体服务器架建[转]

    今天我们来做一个windows media server流媒体格式文件的流媒体服务器. 现在市面上能够买到的一些电影文件有 rm格式和wmv格式.还有一些是DivX技术的avi格式,要想让你的服务器对 ...

  8. iOS中 视频直播功能-流媒体的使用(详解)韩俊强的CSDN博客

    上一篇博客:(流媒体实现视频播放和下载功能):http://blog.csdn.net/qq_31810357/article/details/50574914 最近视频直播功能比较火,处于需求,研究 ...

  9. [流媒体]live555简介(转)

    live555简介 Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP.RTSP.SIP等的支持.Live555实现 了对多种音视频编码 ...

随机推荐

  1. 关于.net Core项目发布在Linux上的填坑

    本文主要记录.net Core项目发布在Linux服务器上面所遇到的问题,防止遗忘是 1.在发布文件中执行 dotnet xxxxxx.dll的时候提示如下错误: An assembly specif ...

  2. Cogs 1995. Yukari

    1995. Yukari ★★☆   输入文件:camera.in   输出文件:camera.out   简单对比时间限制:1 s   内存限制:128 MB 题目背景: 幻想乡的创始人之一,八云紫 ...

  3. 线段树 洛谷P3932 浮游大陆的68号岛

    P3932 浮游大陆的68号岛 题目描述 妖精仓库里生活着黄金妖精们,她们过着快乐,却随时准备着迎接死亡的生活. 换用更高尚的说法,是随时准备着为这个无药可救的世界献身. 然而孩子们的生活却总是无忧无 ...

  4. 退役or延期退役

    究竟是\(150\)天后退役,还是能继续续命呢? 一切看自己了!加油!\(cyh\)!千万不要败在别人的只言片语之下啊!

  5. javascript中的Set和Map数据结构

    Set数据结构 类似数组,所有的数据都是唯一的,没有重复值,它本身是一个构造函数 size 数据长度 add() 添加一个数据 delete() 删除一个数据 has() 查找一个数据 clear() ...

  6. JMETER断言:终极指南

    你想要: 检查服务器响应是否包含特定字符串, 或验证服务器返回了HTTP 200 OK, 或者检查json字段的值(使用类似JsonPath$.store..price). 断言是要走的路. 问题是: ...

  7. 从select机制谈到epoll机制

    目录 为什么要用select机制 等待队列 唤醒操作 什么是select机制 关于fd_set select使用 poll函数 为什么select效率较低 什么是epoll epoll机制实现思路 e ...

  8. Ubuntu下rsyslog集中收集mysql审计日志

    服务端 1.安装最新版本rsyslog sudo apt-get install software-properties-common python-software-properties sudo ...

  9. maven插件: shade, assembly

    shade插件的作用: 通过版本的exclution无法解决jar冲突的问题, 解决方案是把依赖的包打到本model的jar中,打包的时候由mvn plugin自动修改代码中的依赖jar包名 relo ...

  10. python模块之datetime方法详细介绍

    datetime Python提供了许多内置模块用于操作时间日期,如calendar,time,datetime,这篇文章主要是对datetime进行汇总,datetime模块的借口实现原则更加直观, ...