Загрузить каждый n-й пиксель в каждом n-м кадре файла MP4

Загрузить каждый n-й пиксель в каждом n-м кадре файла MP4

Я работаю в среде с ограниченной пропускной способностью. Я хочу иметь возможность загружать файлы MP4, но меня не сильно волнует качество. Я думал о том, чтобы теоретически снизить использование пропускной способности примерно до одной восьмой, если бы я загружал только каждый четвертый пиксель и только каждый второй кадр.

Позвольте мне проиллюстрировать, что я имею в виду. xозначает «пропущено».

Допустим, у нас есть файл MP4 размером 8x4, поэтому кадр выглядит следующим образом:

OOOOOOOO
OOOOOOOO
OOOOOOOO
OOOOOOOO

Я хотел бы сэкономить трафик, загружая только необходимую информацию, например:

OxOxOxOx
xxxxxxxx
OxOxOxOx
xxxxxxxx

Итак, по сути, каждый блок размером 2x2 пикселя идет от

OO
OO

к

Ox
xx

Таким образом, загружается только один пиксель вместо всех четырех.

Я хотел бы применить то же самое к кадрам. Если видео 8 кадров в секунду имеет секунду, выглядящую так

[ O O O O O O O O ]

это должно стать этим

[ O x O x O x O x ]

поэтому 2*nзагружаются только пронумерованные кадры.

Я полагаю, что это было бы более или менее легко возможно с несжатыми файлами, такими как простые текстовые документы или изображения BMP, где данные кадра n не зависят от кадра n-1, но я хотел бы знать, может ли кто-нибудь из вас оценить, насколько это возможно с MP4. Кодированный (?) в вопросе - этоisomiso2avc1mp41

решение1

Мне бы хотелось узнать, может ли кто-нибудь из вас оценить, насколько это возможно с MP4.

Это возможно на 0%.

ну технически это зависит от того, какой видеокодек внутри mp4, но если предположить, что он сейчас необработанный (что сделало бы файл просто огромным), то, вероятно, он использует кодек, который использует как временное, так и пространственное сжатие. В их случае это avc1, также называемый h264

Пространственное сжатие в кодеках выполняется путем преобразования из пространственной области в частотную область с помощью преобразования типа DTC. Чтобы восстановить пиксель, у вас должны быть все коэффициенты для IDCT, это означает загрузку всего.

Что касается пропуска кадров, вы можете пропустить любые P (и, возможно, B) кадры и загрузить только ключевые (IDR) кадры. Но ключевые кадры в среднем разнесены примерно на 1-10 секунд. Так что если 0,1 кадр/с — это нормально, то пропускная способность сократится, вероятно, чуть меньше, чем наполовину.

Связанный контент