Конвертировал видео снятое fraps из компьютерной игры и заметил, что качество после конвертирования уже не то что на оригинале.

Вот сами посмотрите, идет потеря насыщенности цветов:

vlcsnap-2013-06-16-18h07m41s20

ОРИГИНАЛ без сжатия

vlcsnap-2013-06-16-18h11m27s216

КОНВЕРЧЕНО в h.264 либо другим популярным конвертером

Такая же картина складывается при конвертировании видео с некоторых современных цифровых видеокамер.

Попробуем разобраться почему это происходит и как с этим бороться.

Бороться с появлением шумов и искажений просто. Достаточно добавить битрейт видео.

Но вот битрейт не оказывает никакого влияния на потерю цветности изображения.

Потеря цветности или насыщенности цветов идет при конвертировании из одного цветового пространства (оригинал видео) в другое, то которое поддерживает кодек.

Цветовое пространство представляет собой модель представления цвета, основанную на использовании цветовых координат. Цветовое пространство строится таким образом, чтобы любой цвет был представим точкой, имеющей определённые координаты, причём так, чтобы одному набору координат соответствовал один цвет.

Видео кодеки – позволяют сократить объем занимаемый видео на жестком диске, но при этом сохранить всю видеоинформацию без потерь в определенном (YUV или RGB) цветовом формате.

Существуют следующие виды цветовых форматов применительно к видео:

YUV (4:4:4)

YUY2 (4:2:2)

YV12 (4:2:0)

RGB

sRGB

Если Вы не хотите потерь цвета, внимательно проверьте цветовой формат видео на входе (тоесть оригинальный файл) и установки видео-кодека при сжатии. Если произойдет конвертация из оного цветового пространства в другое, получится потеря цветности и возможно детализации.

Посмотреть данные об цветовом пространстве видеофайла можно в любой утилите показывающей расширенную информацию и видеофайле, я использую плеер VLC.

werwrf
Самое неприятное в этой ситуации это то , что самые популярные MPEG4-подобные кодеки, а именно: xVid, DivX, WMV9, VP6/7, h.263, h.264, все форматы для мобильных устройств, по умолчанию преобразовывают в YV12 видеопоток. Отсюда и потеря цветности если видео с fraps например по умолчанию пишетcя в RGB цветовом пространстве. Конвертация из RGB цвета в YV12 равна потере цвета и незначительной детализации изображения.

Однако есть и плюс: экономия дискового пространства  (видеопоток в формате YV12 занимает в несжатом состоянии на 25% меньше места по сравнению с несжатым YUY2 — выигрыш даже в этом, не говоря уже об RGB).

Что делать?

Самое простое придерживаться цветового пространства YV12 (4:2:0) , по умолчанию именно с ним работают кодеки и в него преобразуется видео для выкладывания в сеть.

Тоесть полазить в настройках своей цифровой камеры и добиться, чтобы она писала видео в этом формате и снимать видео с рабочего стола или из игр программами пишущими в YV12 цветовом формате.

 

Что делать если уже имеется материал в другом цветовом формате?

Про кодеки типа xVid, DivX сразу забыть, у них нет настроек цветового формата и по умолчанию они перегоняют все в YV12.

Однако есть перспективный кодек h.264, старая версия от начала 2013 не давала мне выбрать цветовое пространство. Однако обновив кодек июнем 2013 я обнаружил такие опции

sfdwe
Тоесть можно теоритически выбрать в какой цветовой формат конвертировать, но по факту, выбор любых условий кроме YV12 (4:2:0) приводит пока у меня к либо отказу в конвертации либо конвертированию без показа картинки (полученный в итоге результат — весь ролик черный экран). Но я таки понимаю это так, что кодек дорабатывается и в будующем проблема перегона из одного цветового формата в другой решится.

А пока временно я нашел комманду  —range pc (список комманд на скриншоте ниже в справке – красный кружок)

sfdwe

Без комманды кодек считает, что на входе файл с ТВ-диапазоном цветности и яркости, тоесть  —range tv.
При —–range pc кодек считает, что на входе файл с ПК-диапазоном цветности и яркости.
Это подсказка декодеру как правильно воспроизвести файл.

Это если конвертируете видео записанное с ПК-диапазоном. Но для ТВ-диапазона также критически важно давать верную подсказку. Поэтому если не знаете в каком диапазоне ваше видео, вырежте из него небольшой (10 секунд) отрывок и отконвертируйте два раза, один раз с одной коммандой потом с другой, другой раз без него и сравните какой из полученных файлов ближе к оригиналу.

 

Дак вот с коммандой —–range pc  мо видео стали почти по цветности как оригинал. Хотя мне кажется и потеряло немного насыщенности, хотя это уже почти не заметно на глаз.

 

Если же Вы хотите в данный момент заняться перегоном видео из другого цветового формата, не дождавшись пока допилят x264vfw. И вас не устраивает даже частичная еле заметная потеря цветности.

Вам будут полезны эти статьи по колометрии:

http://blog.danxee.com/archives/242

http://www.videorip.info/forum/16-obrabotka-video—audio/104-colormatrix—kak-sokhranit-tsvet-yarkost-i-nasyshchennost#111

http://rutracker.org/forum/viewtopic.php?t=3368000

http://rutracker.org/forum/viewtopic.php?t=2660571

Читать похожие статьи: