Video 如何存储和压缩H.264剩余帧

Video 如何存储和压缩H.264剩余帧,video,compression,video-processing,video-encoding,Video,Compression,Video Processing,Video Encoding,我试图更好地理解视频压缩,特别是mp4的工作原理 我理解使用运动估计/补偿来预测帧的概念。但是,这会留下存储为剩余帧的错误 在尝试重新创建存储这些剩余帧的概念时,我遇到了两个问题 第一个问题:我假设您使用像jpg这样的图像压缩来压缩剩余帧 如果这是真的,您将如何存储负值?为了得到一个剩余帧,你从一个I帧中减去一个预测帧,在某些情况下,减法会留下负数 为了说明这一点,假设I帧像素为50,p帧为55: 50 - 55 = -5; 差值为-5。你不能在jpg中存储负值,所以我猜你会将它偏移127?

我试图更好地理解视频压缩,特别是mp4的工作原理

我理解使用运动估计/补偿来预测帧的概念。但是,这会留下存储为剩余帧的错误

在尝试重新创建存储这些剩余帧的概念时,我遇到了两个问题

第一个问题:我假设您使用像jpg这样的图像压缩来压缩剩余帧

如果这是真的,您将如何存储负值?为了得到一个剩余帧,你从一个I帧中减去一个预测帧,在某些情况下,减法会留下负数

为了说明这一点,假设I帧像素为50,p帧为55:

50 - 55 = -5; 
差值为-5。你不能在jpg中存储负值,所以我猜你会将它偏移127?(255的中间值)

但现在您最多只能记录127个更改。如果有比这更大的变化呢?您是否必须在一个jpg中记录负值,在另一个jpg中记录正值

我的第二个问题:再次假设您使用jpg对剩余帧进行编码,即使是1920x1080的空白jpg也会使用photoshop中的最低质量设置以45kb的速度保存。每秒24帧,这将使您达到1Mb/s


那么,剩余帧是否被进一步分解?当某个宏块超过某个错误阈值时,是否只保存所需的宏块?

xor,而不是减法。@szatmary哇,这很有道理谢谢!看起来mp4有一些令人印象深刻的运动估计功能,可以将xor'd帧压缩到最小。
50 - 55 + 127 = 122