VP9
VP9 is an open and royalty-free[1] video coding format developed by Google.
VP9是谷歌开发的一款开源的视频编码格式。
VP9 is the successor to VP8 and competes mainly with MPEG's High Efficiency Video Coding (HEVC/H.265).
At first, VP9 was mainly used on Google's video platform YouTube.
The emergence of the Alliance for Open Media, and its support for the ongoing development of the successor AV1, led to growing interest in the format.
VP9 的主要竞争对手的是HEVC.
VP9主要被用在Youtube上。
VP9后续的接棒者为AV1。
In contrast to HEVC, VP9 support is common among web browsers (see HTML5 video § Browser support).
The combination of VP9 video and Opus audio in the WebM container, as served by YouTube, is supported by roughly 4⁄5 of the browser market (mobile included) as of June 2018.
The two holdouts among major browsers are the discontinued Internet Explorer (unlike its successor Edge) and Safari (both desktop and mobile versions).
Android has supported VP9 since version 4.4 KitKat.
和HEVC相比,VP9在网络浏览器的更常见(比如HTML5的支持)。
Youtube上大量的视频的封装格式是WebM,视频编码格式为VP9,音频编码格式为Opus。这种组合,被5分之4的浏览器所支持。
Input #0, matroska,webm, from 'NORWAY_8K.webm':
Metadata:
encoder : Lavf57.71.100
Duration: 00:03:33.20, start: -0.007000, bitrate: 62999 kb/s
Stream #0:0: Video: vp9 (Profile 0), yuv420p(tv, bt709/unknown/unknown), 768
0x4320, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 1k tbn, 1k tbc (default)
Stream #0:1: Audio: opus, 48000 Hz, stereo, fltp (default)
Frames, Tiles and Blocks
VP9 is based on decomposition(分解) of video image frames into rectangular pixel blocks of different
sizes, prediction of such blocks using previously reconstructed blocks, and transform coding of
the residual signal.
VP9将视频帧分解成不同大小的矩形像素块, 用已重建的块对这些块进行预测,并对残差信号进行变换编码。
There are only two frame types in VP9.
Intra frames or key frames are decoded without reference to any other frame in a sequence.
Inter frames are encoded with reference to previously encoded frames or reference buffers.
VP9中只有两种类型的帧: Intra frames or key frames 和 Inter frames 。
Video image blocks are grouped in tiles.
Based on the layout of the tiles within image frames, tiles can be categorized into column tiles and row tiles. Column tiles are partitioned from image frames vertically into columns and row tiles are partitioned from image frames horizontally intorows.
Column tiles are independently coded and decodable units of the video frame.
Each column tile can be decoded completely independently.
Row tiles are interdependent.
There has to be at least one tile per frame.
Tiles are then broken into 64x64 super blocks that are coded in
raster order within the video frame.
Overview of Compressed Frame Format
Every frame begins with an uncompressed header, followed by a compressed header.
Beside the headers, the main body of a compressed video frame contains the compressed perblock
data for one or more tiles.
每一帧的结构
VP9中每一帧都是以上的结构。
Uncompressed header contains bitstream profile, frame type (intra or inter),
colorspace descriptor, YUV chroma subsampling,
YUV range, frame size, motion compensation interpolation filter type,
frame buffers to be refreshed, loop filter parameters,
quantization parameters, segmentation and tiling information.
There is also frame context information and binary flags indicating the use of error resilient mode, parallel decoding mode, high precision motion vector mode, and intra only mode.
Uncompressed header中包含了流的profile、帧类型(帧内预测还是帧间预测)、量化参数等信息。
Compressed header contains frame transform mode, probabilities to decode transform size for
each block within the frame, probabilities to decode transform coefficients, probabilities to
decode modes and motion vectors, and so on.
Compressed header包含了帧的变换模式等信息。
VP9 supports consolidating multiple compressed video frames into one single chunk, called
“superframe”. The superframe index is stored in the last up to 34 bytes of a chunk. The
enclosed frames can be located by parsing superframe index.
superframe.png
References:
https://en.wikipedia.org/wiki/VP9
http://downloads.webmproject.org/docs/vp9/vp9-bitstream_superframe-and-uncompressed-header_v1.0.pdf
网友评论