mp4块匹配如何工作

时间:2018-07-18 04:16:05

标签: video ffmpeg compression

我一直在研究一种视频编码器,该编码器使用block matching在以前的帧中查找相似的块。

为简单起见,我将省略大部分细节,但是我想知道是否正确地使用了块匹配算法。

为了在前一帧上找到一个块,我的编码器对YUV颜色空间中的Y通道使用了均方算法。

通过比较我们要匹配的块的每个像素与上一帧的块来工作。它采用每个像素的差异并将其平方。

比较所有像素后,选择平均差最小的块作为所需块。

现在这是我需要帮助的地方。我的编码器查看256x256区域中的每个可能的块,并使用半像素搜索。它可以使用的最小块大小为4x4。

从我在网上阅读的内容来看,这与mp4的用法相同。

但是我找不到与mp4一样多的块。

例如,这里是我要压缩的2帧。第一个是I帧,第二个是P帧:

enter image description here

现在,在我的编码器运行之后,它可以将第二帧缩小80%,并且无法将其匹配得足够近,可以将其保存为“差异”块。哪些是灰色块,仅记录差异。他们看起来像这样:

enter image description here

现在我不明白的是保存这些“差异”块,因为jpg大约需要90kb的精度。

将其乘以24(每秒24帧),即可得到2070kb /秒。这不包括实际运动矢量占用多少空间或其他任何东西。

无论如何,mp4能够以每秒700kb的速度将以上图像的视频压缩到每秒700kb,并且在更大的数据量下仍比我的编码器更好。

这是为什么?寻找方块时,我做错什么了吗?任何帮助将非常感激。

0 个答案:

没有答案