流媒体 6——MPEG电视
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电视的更多相关文章
- 流媒体 5——MPEG声音
1. 听觉系统的感知特性: MPEG声音的数据压缩和编码不是依据波形本身的相关性和模拟人的发音器官的特性,而是利用人的听觉系统的特性来达到压缩声音数据的目的,这种压缩编码称为感知声音编码. 许多科学工 ...
- 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 ...
- 《周四橄榄球之夜》流媒体视频拆解:Twitch VS Amazon Prime
文 / Phil Cluff 译 / 王月美 原文链接:https://mux.com/blog/thursday-night-football-streaming-technology-showdo ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器功能简介---实时数据统计报表、视频文件上传、点播、分享、集成
熟悉EasyDSS流媒体服务器的小伙伴应该都知道,EasyDSS通过将EasyRTMP推流的直播流进行直播转码.智能处理.视频分发,再通过 CDN 分发节点分发到终端播放 SDK为观众播放高清低延时的 ...
- 流媒体知识 wiki
媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等.最近因为项目的关系,需要理清媒 ...
- Live555流媒体服务器编译(Windows下)
最近在回顾之前做过的相关项目,其中包括live555流媒体服务器相关,今天先把live555开源框架在Windows下的编译方法记录一下. live555是一套使用使用开放的标准协议(RTP/RTCP ...
- Windows Server 2003从入门到精通之Windows Media Server流媒体服务器架建[转]
今天我们来做一个windows media server流媒体格式文件的流媒体服务器. 现在市面上能够买到的一些电影文件有 rm格式和wmv格式.还有一些是DivX技术的avi格式,要想让你的服务器对 ...
- iOS中 视频直播功能-流媒体的使用(详解)韩俊强的CSDN博客
上一篇博客:(流媒体实现视频播放和下载功能):http://blog.csdn.net/qq_31810357/article/details/50574914 最近视频直播功能比较火,处于需求,研究 ...
- [流媒体]live555简介(转)
live555简介 Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP.RTSP.SIP等的支持.Live555实现 了对多种音视频编码 ...
随机推荐
- 连接mysql时报:message from server: "Host '192.168.76.89' is not allowed to connect to this MySQL server 处理方案
1.先用localhost方式连接到MySQL数据库,然后使用MySQL自带的数据库mysql; use mysql: 2.执行:select host from user where user = ...
- 项目接入apm后错误报警总结
此文已由作者张磊授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 前言: 后端服务一般都有监控措施,一般可以及时发现线上错误,但是很多项目的前端却没有线上报警服务,即使有错误, ...
- [CentOS7] gzip, bzip2, xz 压缩与解压缩
声明:本文主要总结自:鸟哥的Linux私房菜-第八章.檔案與檔案系統的壓縮,打包與備份,如有侵权,请通知博主 gzip命令: 选项参数: -c :将压缩后的数据显示到屏幕上,可以用于重定向: -d : ...
- SQL Server远程调试失败
前言 刚刚打开SQL Server 2008,想要新建一个数据库.发现出现了一个问题,这个问题由于之前没有遇到过,所以这次拿出来记录一些解决方式. 内容 出现上面这个错误的原因可能是由于咱们在装VS2 ...
- EOS 数据签名与公匙验证代码用例
本文编写了一个小例子诠释了EOS是如何对数据签名与校验的,通过本文可以理解了签名的重要性和数据的不可篡改性. 系统: ubuntu 版本为EOS1.1.1 注:因为本文的程序是把EOS里面的钱包和f ...
- 洛谷P5058 [ZJOI2004]嗅探器
题目描述 某军搞信息对抗实战演习,红军成功地侵入了蓝军的内部网络,蓝军共有两个信息中心,红军计划在某台中间服务器上安装一个嗅探器,从而能够侦听到两个信息中心互相交换的所有信息,但是蓝军的网络相当的庞大 ...
- springboot 简单自定义starter - dubbo
首先需要引入pom 这里使用nacos注册中心 所以引入了nacos-client 使用zookeeper注册中心的话需要引入其相应的client <dependency> <gro ...
- Jmeter分布式(转)jmeter -n -t baidu.jmx -l result.jtl -R 172.16.20.146:1099
1.准备2台在同一个局域网内的机器,一台作为master主控机,一台作为slave 执行机 master机器ip:172.16.20.134 slave机器ip:172.16.20.146 2.在2台 ...
- QT的学习
背景 最近正忙着做一个项目,由于之前对面向对象编程了解的非常少,所以导致项目的代码有很多不太清楚:看到代码的时候整个人是懵的.所以在国庆期间,结合着大神的博客看了一下面向对象编程,并学习了开发GUI应 ...
- python3 下载 以及 练习1 以及 pycharm 专业版 安装
下载python: https://www.python.org/downloads/release/python-365/ ########sample 1 下载pycharm 社区版本,但是web ...