Профиль: Аноним (вход | регистрация) неRU opennet.me  
The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Немного об видеоэнкодинге."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Немного об видеоэнкодинге."  +/
Сообщение от Bill Gatesemail (ok), 31-Июл-26, 09:45 

   В операционной системе, существует декодер и кодер, декодер, читает формат сжатия видео, а кодер кодирует видео в этот формат.
   Существует 2 основных варианта технологий сжатия, это mpeg и h.26Х
  В конце 80х когда люди начали переходить с магнитных лент, на цифровые носители, в 1988 году, был разработан первый алгоритм, DCT , это по сути передача только разницы, между изображениями, представь что отрисовка 10 кадров в видео, где ты снимаешь свою комнату идёт так, допустим твоя камера это 2х2 пикселя, и все они имеют ванильный цвет, когда ты не двигаешь камеру, они остаются одного цвета, значит можно записать в память их например как не в+в+в+в (в-ванильный) а как 4в , ведь 1 символ это 1 байт, а так мы экономим сразу 2 вместо 4 байтов которые бы потратили отрисовав всё полностью, а так мы подразумеваем что их четыре, но не записывая эту информацию как есть, а более просто.

И такой принцип можно перенести на камеру которая снимает в 144p например , там таких пикселей очень много, что помогает сэкономить, без этого твоё видео на 2 минуты займет гигабайта 4 например)

Однако прорыв случился гораздо позже в 1993 году пустили в мир mpeg-1 , это и есть mp4 только он уже называется mpeg 4 part 14 , и таких part существует 40 штук, просто удачные концепции выжили.

mpeg ввел, концепцию кадровой разницы.
Вот их настоящая суть:
* I-кадр.
* Это опорный/полный кадр. Он хранит всю картинку целиком, как отдельный JPEG. Пишутся каждую секунду.
*
* P-кадр. Он хранит не всю картинку, а только разницу между собой и предыдущим I- или P-кадром. Если сцена меняется медленно, он весит копейки.
*
* B-кадр.
*  Он смотрит назад на предыдущий кадр и вперед на следующий. Он хранит разницу усредненно между ними. Они самые маленькие по весу, но без I и P кадров их не расшифровать.
*

  А таккже появились gop группы это возможность, читая запись типа I P B B P B B I кадров, перемещаться в видео на I кадры. Чтобы ты могла перематывать видео.
  
Однако, с появялением кодеков или форматов сжатия, как угодно, появились и контейнеры, например тот же mp4 это одноврепенно само видео и контейнер.
  Контейнер нужен для того, чтобы синхронизировать потоки видео и аудио, представь что ты снимаешь видео и говоришь в микрофон одновременно. По сути там пишется два разных потока, если бы не существовало контейнеров, ты бы не смогла четко разговаривать, звук отставал бы или спешил. А так, ты можешь не переживать об этом.
  Контейнеры таккже включают в себя субтитры и например старые dvd даже небольшое экранное меню ,где ты могла выбрать фильм.
   В общем контейнер заранее объединяет звук с видео, чтобы все работало правильно.
   Их ты можешь встретить несколько .avi .mkv .mp4 внутри каждого хранится свой кодек-h.260,mpeg1,mpeg4 и так далее.
  
Сейчас самый новый стандарт это h.266(2020) , правда для его раскапаковки то есть декодирования, потребуется мощная видеокарта, а если её нет, и она встроенная, то мощный процессор.
  
Видеокарты  бывают двух типов, как твоя, это полноценный движок который сам все умеет обрабатывать очень быстро ведь все чипы близко между собой на плате.
И есть встроенная видеокарта, по сути она берет немного оперативной памяти и использует её чтобы показать картинку. Но дискретная использует свою память, а встроенная обращается к памяти компьютера, это задержки.

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

FLOPS = (Количество ядер) × (Тактовая частота) × (Количество операций за такт)
    •    CPU (процессор): 8 ядер × 3.5 ГГц × 8 операций/такт = ~224 GFLOPS.
* GPU (видеокарта): 3840 ядер × 1.5 ГГц × 2 операции/такт = ~11 520 GFLOPS = 11.5 TFLOPS.
Гигафлопс- 1 миллиард операций в секунду.

Таккже есть, варианты flops.

FP32    float (32 бита)    Высокая    Игры, научные расчеты
FP16    half-float (16 бит)    Средняя    Нейросети, AI-ускорение
INT8    целые числа (8 бит)    Низкая    AI-вывод, сжатие
TF32    гибрид 32/19 бит    Средняя    NVIDIA Tensor Core

Видеокарты стараются выбирать низкую точность то есть int8 , чтобы иметь больше гигафлопс.
Однако если ты хочешь перекодировать видео в другой формат или в тот же самый, например, то к сожалению видео ухудшается всегда даже если записывать все данные, при перекодировании заново, в те же блоки.
  Потому что есть такой термин квантование. В математике, люди были настолько ленивы, что привыкли округлять, если у тебя число 0.5 или выше 1, в сторону больше, а если ниже то наоборот.
    
Ниже будет представлено вычисление😅
   Каждый int имеет свой масштаб, это обусловлено тем, так решили разработчики.
Масштаб это по сути то насколько точно можно смещать указатель , просто представь что ты меняешь яркость и можешь не на 25% менять, а более точно, на 10% например из 100%
1. INT8 (масштаб 2):
    * 123.456 × 2 = 246.912 > округляем до 247.
    * Делим на коэффициент квантования (например, 10): 247 ÷ 10 = 24.7 → 25.
    * При декодировании: 25 × 10 = 250. ( это нужно чтоб число было целое)
    * Потеряли 123.456 × 2 = 246.912 — 250 = -3.088
2. INT16 (масштаб 256):
    * 123.456 × 256 = 31 604.736 > округляем до 31 605.
    * Делим на коэффициент квантования (10): 31 605 ÷ 10 = 3 160.5 > 3 161.
    * При декодировании: 3 161 × 10 = 31 610.
    * Делим обратно на 256: 31 610 ÷ 256 = 123.476.
    * Потеряли 123.456 — 123.476 = -0.02(почти нет ошибки).
Таким образом, совершается сжатие видеоизображения.

Ответить | Правка | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2026 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру