Как хранятся и сжимаются остаточные кадры H.264 - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь лучше понять, как работает сжатие видео, в частности, mp4.

Я понимаю концепцию использования оценки / компенсации движения для прогнозирования кадра.Однако это оставляет ошибки, которые сохраняются как остаточные кадры.

У меня есть две проблемы при попытке воссоздать концепции хранения этих остаточных кадров.

Первая проблема: Я предполагаю, что вы сжимаете остаточные кадры с помощью сжатия изображений, например jpg,

Если это правда, как бы вы хранили отрицательные значения?Чтобы получить остаточный кадр, вычтите предсказанный кадр из I-кадра, в некоторых случаях вычитание оставляет отрицательные числа.

Для иллюстрации скажем, что пиксель I-кадра равен 50, а P-кадр равен 55:

50 - 55 = -5; 

Разница составляет -5.Вы не можете хранить отрицательные значения в JPG, поэтому я предполагаю, что вы сместили его на 127?(На полпути значение 255).

50 - 55 + 127 = 122  

Но теперь вы можете записывать только изменения до 127. Что, если есть изменения, превышающие это?Нужно ли записывать отрицательные значения в одном jpg и положительные значения в другом?

Моя вторая проблема : опять же, если вы используете jpg для кодирования остаточных кадров, даже пустой JPG 1920x1080 сохраняет в45кб, используя самые низкие настройки качества в фотошопе.При 24 кадрах в секунду это будет 1 Мбит / с.

Итак, остаточные кадры разбиты еще дальше?Как сохраняются только необходимые макроблоки при нарушении определенного порога ошибки для этого блока?

...