1.Adobe Flash Screen Video bit stream format的简要介绍
Adobe在flash 7版本中引入了针对桌面屏幕的codec的格式,这种Screen Video是一种简单的无损序列bmp格式的视频,它是用于计算机屏幕抓屏发送格式。在这种桌面视频格式的pixel data是用ZLIB标准进行压缩的,C++和Java都提供了这种ZLIB基础类库的支持。
这种codec的格式,由于是无损的,因此用ZLIB压缩以后的数据量仍然很大,其实在商业应用中,很少用到这种codec,因为它的压缩比实在是太小了。这种codec也被称为Screen Video V1 bitstream format。
2.Block format(块的格式)
在Screen Video bit stream V1 format中,它是把屏幕按照最小的block大小进行分块,然后下一帧数据和上一帧数据进行比较,把每一块变化的部分用ZLIB进行压缩,没有变化的部分不参与数据的传输和压缩。这种格式的定义,在屏幕变化不大的情况下,是非常高效和有意义。
在一个screen video序列中每帧数据被格式化成一系列的块,专业术语称为block。这些block形成了图片的网格。对于一个key frame(关键帧),每个block都会发送出去。对于一个比较帧,专业术语称为interframe,一个或者多个block,可能会没有包含数据,这表明这个bitmap区域代表与上一个关键帧比较数据没有变化。
Blocks有高和宽,它们大小通常是16的倍数,最小为16,最大为256.Block的高不需要跟block的宽匹配。block的尺寸应该不会有变化除非是关键帧。Block是按照顺序存放的-从屏幕的左下角到到屏幕的右上角排成行。
下图是120*180的屏幕图片block的分布和排列,block size基准是32*32,屏幕按照32*32进行分块,因此分成了如下图的12个序列: