В этом году исполняется юбилей — 16 лет, как был запущен сайт compression.ru, на котором автор и сотоварищи организуют сравнения видеокодеков и кодеров изображений. За это время были проведены десятки сравнений с отчетами от 23 до 550+ страниц, количество графиков в последнем сравнении перевалило за 7000, а количество разных феерических случаев за это время окончательно превысило все разумные пределы. Поскольку следующая круглая дата (32 года) наступит еще нескоро, есть желание рассказать в честь юбилея малую толику феерического.

Если говорить про кодеки, то не секрет, что большинство сравнений и графиков, которые видит почтеннейшая публика — это продукт отдела маркетинга. В лучшем случае — графики грамотно делали инженеры, а маркетинг только давал добро на публикацию. В худшем случае инженеры вообще не участвовали в их подготовке. К чему тратить время этих занятых людей!

При этом тема сжатия весьма популярна. В сериале «?Кремниевая долина»? стартап главного героя разработал гениальный алгоритм, который в последней серии первого сезона показал невероятное сжатие 3D видео и в итоге теперь миллионы стартаперов (и инвесторов) мира знают, что главное — это чтобы коэффициент Вайсмана был побольше и ещё гения надо найти, а остальное — фигня-вопрос. Чудо будет! Это естественным образом увеличивает ожидание чудес и, конечно (КОНЕЧНО!) эти чудеса радостно демонстрируются компаниями! В том числе с использованием последних достижений уличной магии.

DISCLAIMER: Любые совпадения имен и названий компаний ниже с реальными именами и названиями абсолютно случайны.

Усаживайтесь поудобнее! Обещаем, что к концу рассказа вы сможете показывать подобные фокусы сами, как, впрочем, и раскрывать многие из них. Поехали!


Level 1, фокусы для начинающих


Начнем с самого простого, ибо, как ни странно, эти методы вполне в современной (не сериальной, а настоящей!) Кремниевой долине прокатывают.

Итак, почтеннейшая публика, фокусы с демонстрацией сверхсильного сжатия начинаются!



Наверняка многие видели подобные динамические сравнения с незаметными котиками на основе JS на страницах. Если сравнивается сжатие, то разумно чтобы качество было максимально одинаково (в идеале совершенно одинаково), а справа было бы сжато в 2 раза лучше, например.

Сказано — сделано!

Компания заявляет на 30% лучшее сжатие (все совпадения случайны!). А картинки выглядят совершенно одинаково! Даже профессионально наметанный взгляд не находит различий. Возникает желание посмотреть детальнее. Лезем в код страницы и видим, что слайдер для первой и второй картинки берет данные из одного файла! Получаем преимущества сразу по нескольким параметрам — во-первых, идеально демонстрируется лучший результат, во-вторых, не отвлекали инженера от работы, и, наконец, это место страницы сайта грузится вдвое быстрее. Сплошной profit!!!

Случай, не поверите, реальный. Теперь вы знаете, куда стоит посмотреть!

В другом месте — тоже слайдер и опять замечательный результат. Заглядываем в код слайдера — грузятся разные файлы. Наученные горьким опытом скачиваем их — они не просто до байта одного размера, они совпадают побитно! В общем — все плюсы предыдущего способа, но фокус раскрывается чуть сложнее, правда за счет замедления загрузки страницы (за все приходится чем-то платить...). И, главное, не нужно привлекать дорогих специалистов в сжатии.

Впрочем, более продвинутые маркетологи этого уровня идут еще дальше. Выкладывается слайдер — смотришь — картинки отличаются, но качество о-о-очень похоже. Ну ок. Дальше больше! Демонстрируется фантастическая открытость — есть даже линки на видеофайлы. Скачиваешь — очень неплохое преимущество у их метода, даже непонятно, как они это сделали. Выручает то, что мы же тут все поголовно русские хакеры (уже бренд на западе). Смотрим битовый поток и видим чудную картину:


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

Вспоминается встреча с русским стартапом 6 лет назад. Их директор прямо с порога сказал: «?Вы должны нам все сделать на совесть. У нас инвесторы из «?Северстали»?, и, если что, к вам выедут спортивные бритые ребята с паяльниками.»? Как вы понимаете, в таких суровых условиях качество исследовательской работы волшебным образом возрастает, а количество фокусов разного уровня — падает… При работе с такими кейсами у нас, на родине слонов, возникает непреодолимое чувство жалости к западным инвесторам. Правда не все наши инвесторы такие чисто конкретные, и свои фокусники и в наших палестинах тоже находятся. Причем регулярно. Но про это в другой раз...

Level 7, резонансный


Эта история не про видеокодек, а про сжатие картинок, но в ней многое было по всем законам жанра «?честных фокусов»?.

Как-то довольно известная компания М решила, что им к своим форматам Windows Media Video (WMV) и Windows Media Audio (WMA) нужно добавить Windows Media Photo (WMP). Чисто для комплекта, как вы понимаете.

Молодой человек на галёрке! Ну не надо так громко кричать, не вас одного осенило! Культурные люди (посмотрите на первый ряд) максимум — понимающе усмехнулись в усы…

Сказано — сделано!

Далее внимательно следим за руками:


Т.е. у WMP больше деталей, чем у JPEG и JPEG 2000 при том же уровне сжатия (мягко уравниваются JPEG и JPEG 2000 и задается уровень 24 раза), а в следующем абзаце:


Т.е. обычно только в 6 раз сжимают, а было 24. Вау, пахнет тремя разами! И вообще мы лучше в 2 раза точно. СМИ понесли благую весть в массы (некоторые написали, что в 2 раза лучше JPEG 2000), даже на Хабре повторили эту новость.

Чуть позднее появился график из этой презентации:


Как интерпретировать такие графики?

По вертикали обычно идет качество (какая-то из метрик в зависимости от моды в этот момент времени), по горизонтали — так или иначе — размер. Обычно с увеличением размера качество растет (хотя на практике всякое бывает). По линии одинакового качества (красная горизонтальная) можно прикинуть, что «?пурпурный»? кодек примерно в 2 раза проигрывает по размеру «?синему»? при том же качестве на этом диапазоне битрейтов.


Преимущество по сравнению с JPEG 2000 было небольшим, при том, что они, очевидно, отобрали лучшую картинку с чудным мальчиком и дельфинами. Мы с большим нетерпением ждали возможности поиграться с этим кодером. Примерно через полгода утилиту для сжатия таки выложили.

У нас к тому моменту как раз было годичной давности сравнение 9 реализаций JPEG 2000

Да-да-да! Как не все йогурты одинаково полезны, так и не все реализации стандарта жмут одинаково хорошо. Стандарт оговаривает только битовый поток, положить в который данные (и, кстати, вынуть!) можно сильно по-разному, это порождает отдельный рынок кодеков со своей жесткой конкуренцией по доброму десятку параметров. Простой пипл этого, как правило, не знает, что позволяет безнаказанно ездить ему по ушам практически на бульдозере («?Наш видеорегистратор поддерживает новейший H.265/HEVC, больше его ни у кого нет!»?). И никто (никто!) КРАЙНЕ вероятной подставы не замечает.

Мы радостно вставили в предыдущий отчет 3 линии для WMP. Получилось как-то так:

Видно, что линии реализаций JPEG 2000 идут довольно кучно и у жирной синей (лучшая реализация WMP) результаты где-то посередине, т.е. ПРОИГРЫВАЕТ JPEG 2000. Если взять JASPER за ноль и все по вертикали относительно него показать, то видно, что WMP с худшим параметром проигрывает почти всем, кроме двух последних (одна из них KDU, запомним это), а с лучшим — лежит где-то по центру, проигрывая многим реализациям:

Поскольку сравнение было выложено публично и наделало шуму в узких кругах, то разработчик даже ответил на него в официальном блоге. Заметка была вежливая: похвалили, покритиковали, а дальше, если продраться сквозь текст, человек чистосердечно признался, что они использовали самую худшую реализацию JPEG 2000 нашего сравнения (опубликованного за полгода до того) в своем сравнении, правда «?совершенно случайно»?. Мы, конечно, им поверим. Компания уважаемая и все такое.

Дальше название технологии было изменено с WMP на HD Photo, впрочем в сети остался такой вердикт:

В качестве вишенки на торт. Наши коллеги пошли дальше: взяли больше картинок и показали, что HD Photo проигрывает не только JPEG 2000, но и хорошей реализации JPEG (в 7 случаях из 14). И проигрывает конкретно. Есть основания полагать, что они подбирали картинки, но они откровенно закопали HDPhoto, ибо кому нужен формат, который в половине случаев проигрывает древнему JPEG — непонятно:


Итого, секреты этого фокуса:
  • Берем худшую реализацию основного конкурента, сравниваем с ней.
  • Создаем рекламную шумиху (в стиле «?мы всех сильно обогнали»?).
  • Когда шумиха отходит на второй план, делаем релиз и надеемся, что никто не проверит, что там было на самом деле.

Дети! Никогда так не делайте и не обманывайте других! Ваша компания может потерять миллионы долларов и доверие специалистов.

Level 10, свежий! С нейросетями!


Вообще подобных случаев — очень много. Даже в России я сталкиваюсь с подобными ситуациями примерно пару раз в год (к нам, как к хозяевам compression.ru, информация стекается). На западе разводят лохов инвесторов примерно ежемесячно. А сейчас еще и Китай к этому развлечению подключился. Мощность компьютеров растет, сложность и возможности алгоритмов — тоже. Разбираться в этом все сложнее. Как следствие — бурное веселье продолжается!

В последнее время очень популярны стали нейросети. Абсолютно все, к чему они прикасаются, волшебным образом улучшается. А не применить ли их к сжатию видео?

Сказано — сделано!

В ноябре прошлого года очередная благая весть с подачи самого «Уолл Стрит Джорнал» облетела мир. Создан видеокодек на основе машинного обучения, который всех порвал! Вот пруф:

Вообще я лично крайне скептически воспринимаю все новости с упоминанием нейросетей. И вам советую (ОСОБЕННО, если вы инвестор). Нейросети устроены таким образом, что грамотно подбирая обучающую выборку под тестовую можно показать любой (для непонятливых — ЛЮБОЙ!) желаемый результат. Нейросети — идеальный инструмент для постановки на поток маркетинговых чудес. Одно чудеснее другого!

В общем график есть, картинки есть. Согласитесь — убедительно. Специально для скептиков господа привели еще несколько графиков на известных тестовых наборах:


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

Вас в них ничего не смущает?
Ответ
Из них следует, что за десять лет с принятия стандарта H.264 до принятия H.265 особого развития кодеков не происходило! Эти тупые исследователи 10 лет топтались на месте и делали более медленные кодеки, которые сжимают так же!!! Разница — 20% максимум, а то и меньше!!! 8-\

Они даже под это подводят базу, типа классические кодеки уперлись в предел и уже особо не развиваются (и тут на сцену выходят они, все в белом). И вы знаете, такая наглая ложь прекрасно работает! Причем ладно «The Wall Street Journal» — они (хотелось бы верить) только в финансах разбираются, ладно «MIT Technology Review» — эти джентльмены джентльменам Кремниевой долины верят на слово, но как некритически воспринял новость такой уважаемый ресурс, как Хабр — ума не приложу! Чего уж говорить про массово перепечатавших новость …

В реальности картина развития кодеков, к счастью, заметно отличается. Во-первых, на графике ниже, построенном нами на том же наборе видео xiph, можно увидеть, что H.265 на 25?31% лучше, чем H.264. Т.е. 10 лет развития кодеков таки не прошли даром! (Уфф, прямо от сердца отлегло...) Во-вторых, свежий AV1 показывает практически двукратное улучшение по сравнению с H.264, и ступенька его преимущества, прямо скажем, весьма заметна:


Соответственно на глаз видно, что если наложить график AV1 на 45% левее H.264 на графике авторов — он покроет новый кодек как… [вырезано цензурой]. Хорошо покроет, короче. Потому с ним и «?забыли»? сравниться. Реальный расклад выглядит как-то так (сильно менее кучно, согласитесь):

Чтобы было понятно — у кодеков есть стандартные пресеты, которые позволяют варьировать скорость в значительных пределах (часто десятки раз), но при этом достигать большего сжатия при том же качестве (часто больше 2 раз). У x265 (очень неплохой open-source реализации стандарта HEVC) они называются: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo. Если взять medium за 1, то по скорости и размеру файла при том же качестве они для конкретного файла могут располагаться, например, как на графике ниже. Можно говорить, что относительно medium можно сделать файл на 40% больше или меньше, варьируя скорость в 10 раз:
Заметим, что для некоторых видео стандартные опции не обязательно идут монотонно (в данном случае по качеству). Также иногда «?нестандартные»? опции могут дать большой выигрыш по размеру, в частности на примере выше потеряв 20% по скорости по сравнению с medium можно наиграть 30% по размеру — практически как при переходе на стандарт следующего уровня, но при прежней невысокой сложности декодера. Но это уже более сложный level, о нем в другой раз.

Как легко заметить выше, господа взяли для сравнения «slower». Хорошо, что не «veryfast», ведь могли бы и его! ) И не важно, что у них у самих кодек феерически медленный. Люди в массе своей, глядя на график, не вспоминают о том, что скорость работы кодека может на пару порядков отличаться в зависимости от параметров. Поэтому такой прием вполне прокатывает. Хотя на нашем графике выше («Bitrate/quality...») их пачка линий была в районе красной (которая самая плохая). Заодно оправдывая топтание на месте в развитии кодеков. Ага-ага!

Есть и более тонкие подтасовки, например, господа пишут: «To remove B-frames, we use H.264/5 with the bframes=0 option, VP9 with -auto-alt-ref 0 -lag-in-frames 0, and use the HM encoder lowdelay P main.cfg profile.» То есть они не смогли побить обычные кодеки в честном соревновании и выбрали low-latency режим с низкой задержкой, который используется обычно для реального времени, например, для видеоконференций. Результаты кодека в нем хуже, естественно. При этом их декодер (про энкодер промолчим) работает 2 секунды на кадр, то есть ни о каком low-latency даже близко говорить нельзя. Зато еще несколько процентов наиграли.

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

Понятно, что, чтобы фокус выглядел правдоподобно, нужны еще дополнительные штрихи, которые придают реализма. Например, эти господа опубликовали статью на https://arxiv.org/abs/1811.06981. Сегодня развитие алгоритмов идет настолько быстро, что ждать, пока выйдет статья в журнале становится нестерпимо, поэтому многие сильные авторы публикуют результаты сначала на arxiv.org. Для уличных магов этот сайт удобен тем, что там можно разместить абсолютно любой материал — в отличие от рецензируемых журналов и конференций никто не задаст неприятных вопросов и не зарубит публикацию (нет kill reviewing серьезных мест). А про то, что, например, на 1 апреля на arxiv.org принято публиковать разного рода пародии на научные статьи, в том числе высмеивая его как место публикаций, широкая публика не знает, поэтому для широкой публики публикация там выглядит типа даже солидно.

Идем дальше. Статья на хабре про них называлась «?Первый видеокодек на машинном обучении кардинально превзошел все существующие кодеки, в том числе H.265 и VP9»?. Очередной прикол заключается в том, что машинное обучение в сжатии не только активно исследуется, чему уже посвящаются отдельные треки конференций (то есть статей много), но и активно используется, например, в AV1 (специально привожу гугловый запрос). Но, если бы они честно сказали: «?Мы выпустили второй кодек с использованием машинного обучения, при этом проиграв первому и по скорости, и по сжатию»?, то Wall Street Journal мог про них и не написать… И MIT TechReview не написал бы… И даже Хабр… Очевидно, не вынеся последнего, в компании чуть-чуть поправили подачу. При этом особенностью современного интернета является то, что люди не проверяют информацию, что позволяет спокойно провозглашать себя первыми много кому (начиная с известных компаний). Наглость, как известно, города берет! А фактчекинг не моден.

— Загугли!
— Это как это?
[пример запроса дан выше)))]


И еще про ML/DL. В далекие-далекие времена, когда дискеты были большими, а винчестеры маленькими, одним из приемов «?уличной магии для архиваторов»? было сохранить часть сжимаемого файла куда-нибудь подальше в директорию со временными файлами и таким образом показать рекорд. С тех пор времена изменились. Винчестеры — выросли, дискеты совсем пропали, а данные стало модно прятать вглубь нескольких сотен мегабайт коэффициентов сетки. Можно сохранить «?авторский знак»? в сетке, можно — пасхалку, а можно фейковый рекорд сжатия поставить. Глубокие нейросети — однозначно сила, короче!

Резюмируя данный путь к успеху:
  • Игнорируем современного лидера так, будто его вообще нет.
  • Аккуратно формулируем все так, чтобы читалось будто мы первые использовали какую-нибудь новую технологию (и даже если первый это сделал лидер — никто проверять не будет).
  • У стандартов 5? и 15?летней давности откручиваем ручки так, чтобы они работали хуже нас.
  • Побольше наглости — обосновываем то, что они легли кучно позади нас тем, что они уперлись в предел и уже не развиваются.
  • Публикуемся в «The Wall Street Journal» и на Хабре…

И… (барабанная дробь!)… вам дают еще несколько миллионов долларов! Или не дают… Я бы не давал… Инвесторы! Не спать! А то потом опять будете на воду дуть...

А теперь мастер-класс!


Как я и обещал выше, к концу этого текста вы сможете легко блистать на подмостках условного pikabu.

Сейчас, о почтеннейшая публика, я покажу вам фокус, позволяющий сравнивать, что угодно с чем угодно с любым заранее заданным результатом. Т.е. если надо, чтобы кодек А был лучше кодека Б — значит покажем это, если нужно, чтобы Б был лучше А, хорошо, можем показать и это. Исполним любой каприз отдела маркетинга за ваши деньги совершенно бесплатно!

Давайте сами проверим, как эти самые кодеки жмут. Как говорится — не верь никому, проверь сам. А то, может, и правда эти стандарты не развиваются и нас просто дурят, заставляя зря платить заработанные непосильным трудом деньги непонятно за что?

Возьмем «?Аватар»? в формате 480p24 и сожмем его кодеком x264 c настройками "-preset superfast -x264-params «nal-hrd=cbr» -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M" и кодеком xvid с настройками "-preset superfast -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M" (две очень неплохие open-source реализации стандартов H.264 и MPEG-4). Почему взяты эти кодеки и настройки будет объяснено позднее.

У нас получились два файла почти одного размера:
avatar_x264_cbr1M_superfast.mkv — 1402 MB
avatar_xvid_cbr1M_superfast.mkv — 1401 MB

А теперь, дамы и господа! Внимательно следите за руками!!!

Смотрим, вот новый стандарт и старый:


Смотрим другой кадр:

Без комментариев! А если быстрое движение?


Согласитесь! Прогресс явный и неумолимый! Все развивается и становится все лучше и лучше! А жизнь
краше и веселее!

Хотя…



Боже, что это??? Новый стандарт совсем слил…



А-а-а-а! Люди! Знайте! Корпорации вас обманывают!!! Кодеки уже давно не развиваются, но вам сообщают что все идет хорошо!



Вы видите? Все, чему они научились за 10 лет — это размывать блочность! Причем делают это просто отвратительно! Стало хуже, чем было! Вас водят за нос все эти годы!!!!!!!11


А теперь разберемся, как это сделано.

На самом деле полный кадр выглядит так:

Когда кодек работает, особенно в режиме постоянного битрейта, качество кадров достаточно сильно колеблется. Вот начало фильма, например — качество по классической метрике PSNR (сомнений кто лучше, кто хуже, кстати, нет, видно что зеленый xvid проигрывает в среднем):

Картинка кликается

Если вычесть один график из другого (на рисунке ниже, другое место в файле) — то видно, что в целом кодек более старого стандарта будет проигрывать, однако местами он может вполне уходить на +5 dB (PSNR удобна тем, что она обратно логарифмически пропорциональна среднеквадратичному отклонению, за счет чего, обычно, работает правило: на диапазоне средних и низких битрейтов на глаз видна разница в 1.5 dB). И тут же виден кадр, где в другую сторону разница 20 dB:

Картинка кликается

Теперь вы понимаете, почему ваш покорный слуга всегда с искренним умилением смотрит на приведенные в маркетинговых материалах компаний отдельные кадры, как на доказательство более высокого качества на видео (особенно когда нет графиков)… И ведь так до сих пор иногда приводят!

Чтобы отбирать кадры было проще, мы больше 10 лет назад сделали режим сравнения в нашей тулзе MSU VQMT, при котором сравнивались сразу 3 файла — оригинал, кодек-1 и кодек-2 и сразу сохранялись, например, 30 лучших пар кадров в одну или в другую сторону. Главное — взять файл подлиннее!

А MPEG-4 с низким битрейтом был взят, чтобы с блочностью было все нагляднее.

Итого, путь к успеху:
  • Выбираем режим, при котором колебание качества у кодеков максимально (обычно, однопроходный CBR).
  • Уменьшаем разрешение исходника в 2 раза (ибо скорее всего придется увеличивать фрагменты, например выше фрагменты были увеличены в 3 раза)
  • Берем какую-нибудь метрику (PSNR, SSIM, модную в этом сезоне VMAF).
  • Берем в качестве сравнения старый стандарт с блочностью или отключаем внутренний деблокинг у конкурента опциями.
  • И последнее, не забываем взять файл подлиннее: 3 часа фильма — самое оно!

И БИНГО! У вас несколько примеров насколько вы лучше конкурента!

Ну или где-нибудь, где публика не слишком разборчива, можно кого-нибудь с кем-нибудь успешно сравнить. Пипл будет доволен.

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

Вместо заключения


Выше разбирались относительно простые способы подготовки маркетинговых материалов «в свою пользу» в сравнениях кодеков и кодеров. Естественно, в реальной жизни все сложнее. Увы, если идти глубже, оно будет не так увлекательно и заметно сложнее (желающие могут почитать статью и комментарии тут, например).

А людей, обычно, интересуют простые ответы. Самый популярный ответ в Ответы@Mail.ru на вопрос ?«Какой самый лучший видеокодек?»? — «K-Lite Mega Codec Pack». И это для массового зрителя действительно самый короткий, понятный и точный ответ. А вы говорите — кодеки, стандарты…

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

Спасибо за внимание, дамы и господа! Всем — технической грамотности!

Благодарности
Хотелось бы сердечно поблагодарить:
  • Лабораторию Компьютерной Графики ВМК МГУ им. М.В.Ломоносова за вклад в развитие компьютерной графики в России и не только,
  • наших коллег из видеогруппы, в том числе Сергея Звездакова, Анастасию Анциферову и Романа Казанцева, чьи примеры использованы выше,
  • персонально Константина Кожемякова, который сделал очень много для того, чтобы эта статья стала лучше и нагляднее,
  • и, наконец, огромное спасибо Сергею Лаврушкину, Егору Склярову, Ивану Молодецких, Евгению Ляпустину, Дмитрию Куликову, Александре Анзиной, Виталию Людвиченко, Михаилу Ерофееву и Георгию Осипову за большое количество дельных замечаний и правок, сделавших этот текст намного лучше!

Комментарии (109)


  1. APXEOLOG
    28.05.2019 09:30
    +1

    Отличная статья, спасибо! Теперь буду скептичнее относиться к очередному "убийце джипега"


    1. 3Dvideo Автор
      28.05.2019 09:38

      Старине JPEG-у уже 28 лет, стандарт времен бронзового века по компьютерным меркам. Его замена вполне возможна еще со времен JPEG-2000, а сейчас с нейросетями и подавно. Другое дело, что это вряд ли будет стартап с громкими заявлениями )))


      1. nckma
        28.05.2019 11:17

        Хм… вы же только что писали, что скептически относитесь к нейросетям?


        1. 3Dvideo Автор
          28.05.2019 11:22

          Внимательно следим за руками! )

          • Тезис первый: нейросети фантастически удобны для демонстрации произвольных чудес
          • Тезис второй: нейросети реально уже порвали целую пачку лучших алгоритмов прошлых лет (и, судя по всему, еще пачку порвут в ближайшие годы)

          Эти тезисы не противоречат друг-другу! ) Но они объясняют, почему инвесторы несут хорошие деньги в ИИ-стартапы и почему разных чудес в новостях от них будет в ближайшие годы заведомо много.


          1. drWhy
            28.05.2019 12:27

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


  1. maedv
    28.05.2019 11:47

    Очень интересно! Простой вопрос: имеет ли смысл кодировать бытовое видео в h.265 и AV1, или могут быть проблемы с совместимостью и «тормозами» при просмотре у заказчика? Кодирую по старинке в h.264 1280x720


    1. 3Dvideo Автор
      28.05.2019 11:54
      +1

      AV1 — точно рано. Там разработка в разгаре. HEVC/H.265 — уже вполне, его декодирование уже несколько лет, как акселерируется аппаратно. Как обычно — вопрос кейса, контента, конкретной ситуации.


      1. drWhy
        28.05.2019 12:33

        Жаль только, что как только аппаратную акселерацию добавляют в процессор, кодек вдруг массово перестают использовать (H.264).


        1. 3Dvideo Автор
          28.05.2019 12:37

          Вопрос к политике лицензионных отчислений соответствующего альянса. Рубят сук.


          1. drWhy
            28.05.2019 13:17

            Китайцы вставляют H.264 везде, на заморачиваясь соображениями лицензионности, а при выкладывании полученных видео на тытрубу оно пережимается, замыливается. А смотреть приходится на процессоре, с аппаратным декодером H.264 (бесполезным из-за выбора другого кодека), с 80% загрузкой. Печаль.


            1. 3Dvideo Автор
              28.05.2019 13:38

              Война стандартов, жестокая и беспощадная...) Ютуб в H.264 тоже отдавать умеет.


              1. drWhy
                28.05.2019 14:18

                Умеет, но умалчивает.


                1. Aingis
                  28.05.2019 17:26

                  Расширение h264ify здорово помогает. С ним можно смотреть 1080p60 на двойной скорости.


      1. Riod
        28.05.2019 14:13

        Вроде же стандарт уже есть. В активной разработке кодеры-декодеры, нет?


        1. 3Dvideo Автор
          28.05.2019 14:25

          Да, есть. Торжественно зафиксирована версия битового потока 1.0.0, что дает возможность производителям работать над своими реализациями, но надо отдавать себе отчет, что его делали стахановскими темпами, учитывая количество багов в процессе, они еще остались. И кодеры-декодеры по опыту предыдущих стандартов доводят до ума примерно за 2-3 года. В этот раз сильно помогает открытая реализация и мощная поддержка Google, но сильно мешает более высокая сложность стандарта.


          1. drWhy
            28.05.2019 14:33

            сильно помогает открытая реализация и мощная поддержка Google, но сильно мешает более высокая сложность стандарта.
            И непонятно, станет ли Intel со своими текущими вопросами внедрять аппаратное декодирование ещё одного (пусть и замечательного) кодека в новые процессоры.


            1. 3Dvideo Автор
              28.05.2019 14:46

              Ранее они не только для декодирования, но и для кодирования аппаратную акселерацию поддерживали. Сейчас 100% работы над этим идут (благо принципиально похожих моментов много), а дальше класть ли все в железо или оставить софтверные оптимизации — станет виднее.


              1. Nexon
                29.05.2019 05:38

                Ох, раз уж мы пошли в эту степь.
                Я где-то вычитал, что для декодирования AV1 будут использовать OpenCL/CUDA, там где аппаратного ускорения нет.
                Звучит просто супер, но так ли это?


                1. 3Dvideo Автор
                  29.05.2019 08:18

                  Почему супер? Накладные расходы на передачу данных на GPU реально мешают очень сильно. Сейчас, понятно, супер-медленное сжатие становится популярно, там влияние передачи невелико, но это ускорение только для медленных кейсов.


                  1. Nexon
                    29.05.2019 08:30

                    Медленный кейс для нового кодека это дефолтный кейс же.
                    То есть, у меня вот относительно новый системник, но там 6700K и аппаратного ускорения 4K у него нет для VP9/H265/AV1.

                    В таком сценарии хотелось бы иметь какую-нибудь альтернативу покупке нового процессора и материнской платы.


                    1. 3Dvideo Автор
                      29.05.2019 08:47

                      Что значит дефолтный медленный? )

                      Новые кодеки не делают специально медленными чтобы вы покупали новое железо )))). Основная задача — минимум в 1.5 раза (лучше в два) переплюнуть по сжатию прошлый стандарт, иначе новый стандарт будет внедряться с жутким скрипом. Хрестоматийный пример — JPEG-2000, который несмотря на массу плюсов поторопились выпустить к красивой дате и не додавили сжатие в итоге он до сих пор идет в массы, хромая на все четыре лапы…

                      А дальше идут три процесса:

                      • Оптимизация кодека, при которой он начинает жать с той же силой за гораздо меньшее время (большой и сложный процесс)
                      • Увеличение производительности железа (в последние годы все медленнее)
                      • И… совершенствование кодеков старых стандартов, ибо они на новом железе и с новыми оптимизациями тоже начинают жать быстрее и лучше.


                      И дальше скорости этих процессов определяют, выживет стандарт или нет. MPEG-4, например, относительно не повезло.


                    1. drWhy
                      29.05.2019 15:03

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

                      А альтернативой тотального апгрейда могли бы стать аппаратные декодеры, но, видимо у индустрии свои заботы.


                      1. 3Dvideo Автор
                        29.05.2019 15:57

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


                        1. drWhy
                          29.05.2019 16:15

                          Аппаратный декодер можно было бы делать на программируемой логике. При появлении нового кодека обходилось бы сменой прошивки. При недостатке ресурсов чипа можно было бы просто снизить разрешение. Или купить новый, благо стоило бы это счастье при больших тиражах копейки.


                          1. 3Dvideo Автор
                            29.05.2019 16:18

                            Скажите это разработчикам. Получите ответ типа: «Идите, и так и сделайте!» (censored version))) Если кратко: это так не работает, к сожалению )


          1. Riod
            28.05.2019 18:22

            Имеются в виду баги в стандарте? В формате битового потока, или в реализации кодека?


            1. 3Dvideo Автор
              28.05.2019 20:35

              В реализации — точно, в формате — вероятно.


    1. nidalee
      29.05.2019 05:57

      AV1
      Вы в курсе, какая там сейчас скорость? :)
      image


      1. maedv
        29.05.2019 07:14

        из статьи только о кодеке узнал


        1. 3Dvideo Автор
          29.05.2019 08:24

          Реклама пойдет через год-полтора примерно. Ну или раньше, если нужно будет надавить на H.264 )


      1. 3Dvideo Автор
        29.05.2019 08:22

        Спасибо за цитирование нашего графика! )

        Нам пришлось релизить часть отчета 2018 года в 2019 году из-за того, что ждали, когда все досчитается на AV1…


        1. nidalee
          29.05.2019 10:06

          Спасибо за то, что они есть ;)


          1. 3Dvideo Автор
            29.05.2019 10:11

            Как мы грустно шутим — обычно после сравнения есть только одна компания, которая более-менее довольна методикой сравнения (победитель), да и то… Остальные резко критикуют )))

            Но пока держимся.


      1. flashmozzg
        31.05.2019 11:34

        Это уже устаревшие данные. Сейчас енкодинг AV1уже на порядок быстрее, хоть всё равно непрактично долго для большинства «домашних» сценариев.


  1. nckma
    28.05.2019 11:51

    На мой дилетантский взгляд кажется, что каждый новый кодек требует все больших вычислительных ресурсов. Экстраполируя в будущее, предполагаю, что возможно кодеки будут делать что-то вроде 3д рендеринга. Например, у персонажа есть 5 костюмов. Кодек сохраняет текстуры этих костюмов в начале ролика и далее рендерит их на персонажа при любом освещении, ракурсе и т.д… Требуются огромные ресурсы у клиента, но вероятно сжатие будет очень высоким. Передавать нужно будет только вертексы объектов и натягивать закешированные текстуры.


    1. 3Dvideo Автор
      28.05.2019 12:02

      Если в общем: Подобные идеи были модными еще почти 20 лет назад при разработке расширений MPEG-4. В итоге получился мертворожденный стандарт (большинство расширений стандарта собирают пыль на полках, так никогда и не уйдя в жизнь). Поскольку мощность железа продолжает расти, попытки ее эффективно задействовать конечно будут, вопрос успешности.

      Если конкретно: вы говорите про free view rendering, это большая активно развивающаяся область, но там в общем случае до успеха еще довольно далеко. Хотя для узких спортивных кейсов ее скоро порешают. Забавно, что в MPEG-4 было расширение с поддержкой DIBR (Depth Image-Based Rendering) — эффективное сжатие вольюметрических моделей, 20 лет спустя можно смело прогнозировать ренессанс темы.


  1. drWhy
    28.05.2019 12:18

    Если уж речь зашла о ренессансе и экстраполяции видео, здесь просто обязана быть

    эта картинка
    Джоконда


    1. 3Dvideo Автор
      28.05.2019 12:35

      Да, это типичное свежее нейросетевое чудо ). Виктор Лемпицкий с товарищами отжег, конечно.


  1. Aquahawk
    28.05.2019 12:35

    Блин, вот у меня есть совершенно потребительский вопрос, у меня есть архив видео, снятый разными камерами, старой видеокамерой Sony, Canon 60D, зоопарком телефонов, иногда в слоумо. Я хочу всё пережать и привести в один стандарт. И я ничерта не понимаю какой битрейт мне нужен. И мне условно пофиг сколько времени на пережатие уйдёт, i7 на пару месяцев могу выделить. Но битрейт нужен разный под разные видео. Есть ли инструмент в котором можно было-бы выбрать абстрактное качество видео, и пусть он пережуёт всё что надо? Я знаю про двупроходное кодирование, но оно всё-равно имеет целью заданный средний битрейт, вот его не понятно как выбрать.


    1. 3Dvideo Автор
      28.05.2019 12:51

      1. Вам нужен не фиксированный битрейт, а фиксированное качество (модный сейчас constant quality), чтобы даже если сцена с сильным движением — она все равно смотрелась хорошо. Это отдельная тема сейчас, более сложная чем старое фиксированное квантование.
      2. Да, вам нужен конкретный всеядный продукт, тут я не слежу за новинками, увы. Но люди подсказать могут, надеюсь )


      1. jurok04
        28.05.2019 13:31

        Из бесплатного, всеядного (по заявлениям разработчиков) с опцией constant quality вспоминается HandBrake


        1. 3Dvideo Автор
          28.05.2019 14:11

          Да, судя по документации режим правильный.


    1. drWhy
      28.05.2019 13:04

      Вопрос в цели.
      Хотите просматривать любое видео из зоопарка однотипно — смотрите с компьютера, используя, например VLC media player. Он справляется почти с любыми комбинациями контейнеров/кодеков. Ничего не нужно пережимать, качество не ухудшится, просто добавляйте меняйте накопители на более ёмкие, ну и какая-нибудь программа-каталогизатор понадобится, чтобы не заблудиться в зоопарке.

      Хотите избавиться от наследуемых форматов пережав всё и выбросив все исходники?
      Жмите в сторону лучшего устройства, т.е. Canon'а. Да, у смартфона может быть выше разрешение, но более шумная матрица и оптика попроще. Full-HD на 40" смотрится всё еще пристойно.

      Лучше всё-таки не пережимать — потери будут всегда, а экономия пространства после пережатия быстро съестся очередным гаджетом с 100500 мегапиксельной камерой с очередным модным кодеком.


      1. 3Dvideo Автор
        28.05.2019 14:14

        Некоторые камеры (особенно старые) по умолчанию генерируют фактически MotionJPEG поток. Оно может быть не в этом стандарте, но внутри поток из одних I-frames. Такие потоки можно пережимать практически без потерь качества с экономией раз в 10.
        Если поток хотя бы H.264, то много наиграть не получится, а потери качества точно будут, это правда.


        1. drWhy
          28.05.2019 14:27

          Ещё можно без перекодирования видеопотока перебросить в другой контейнер, например, тот же MotionJPEG из .mov в .mkv или в .avi (убавится хотя бы зоопарка расширений, да и медиаплеерам файл станет понятнее). Звук при этом можно сжать, иногда получив заметную экономию.


        1. Tallefer
          28.05.2019 15:48

          Еще хочется добавить, что Motion JPEG имеет одно редкое и полезное свойство — его кадры можно обрезать (кропать) без потерь, ну то есть как обычный жпег — по сетке 8 (или 16?) пикселей.
          Пример использования — какие-нибудь записи с камер, где много «мертвого» пространства, а еще «перекодирование» какого-нибудь сверхширокого формата в обычный 16:9, а то и 4:3, чтобы справлялось старое железо и картинка без полей была.
          Вполне возможно, какой-то более редкий лосслесс кодек тоже это умеет, но я исходил из того, что умел FFMpeg на тот момент. :)


          1. 3Dvideo Автор
            28.05.2019 16:58

            кадры можно обрезать (кропать) без потерь, ну то есть как обычный жпег — по сетке 8 (или 16?) пикселей
            Есть такое свойство ).

            Сетка зависит от режима прореживания цветовых компонент, все что не 4:4:4 (4:2:0 или 4:2:2 например — можно посмотреть в свойствах файла) — это сетка из 16х16 пикселей. 4:4:4 — это 8x8.


            1. Tallefer
              28.05.2019 17:43

              О, спасибо за ликбез. :) И вообще спасибо за сайт, программы сравнения кодеков (хотя не все заработали, уже не помню почему) и проделанную работу — здорово помогло, когда изучал актуальные кодеки и параметры, чтобы выбрать какой-то для конечного формата перекодировки с камеры. Да и для общего развития интересно было почитать. :)


              1. 3Dvideo Автор
                28.05.2019 18:05
                +1

                Вам наше пожалуйста! :) По сжатию на широкую аудиторию еще делать будем, ибо мифов — море.


        1. Barafu_Albino_Cheetah
          29.05.2019 05:57

          Мне попалось видео со старой камеры. Размытое, но 720p, и формат WMV. Пережал его, уменьшив до 480р, в результате файл уменьшился с 1.2 Гб до 90Мб, а видимой разницы никакой. А у кого-то таких файлов могут быть залежи.


    1. mOlind
      28.05.2019 14:53

      В большинстве случаев перекодирование не добавит качества. Сжатие с потерями, на то и сжатие с потерями.


    1. Eagle_NN
      28.05.2019 16:37
      +1

      Любое, повторю, ЛЮБОЕ пережатие между форматами с потерями ведет к деградации качества.
      Чем больше итераций пережатия будет, тем хуже будет качество материала.
      Более того, по своей сути сжатие с потерями так или иначе основана на выделении значимых и не значимых кусков исходного материала, при этом незначимые куски откидываются или сильно деградируют.
      Большая часть преймущества современных кодеков — имено в наилучшем выборе таких кусков, которые можно сильно деградировать/отбросить.
      Если же мы на вход подаем материал уже деградированый другим кодеком, то эта эффективность стремительно теряется. Более того, она вносит дополнительную деградацию в те куски которые после первой стадии сжатия оставались «хорошими».
      Как результат пережатое видео лучше вообще не пережимать без сильной аргументации на это.
      Чтобы смотреть все подряд — лучше использовать кодек паки или всеядные просмотрщики, так хоть что то будет видно на записи снятой старым телефоном :)

      По процессору отдельная тема. На рядовом i7 пережатие видео в новомодные форматы может производиться со скоростью, к примеру, 1-2 кадра в секунду (при всех максимальных настройках). А это значит, что ролик в 10 минут, будет пережиматься около 4 часов. Так что при наличии архива записей пары месяцев может не хватить :)


      1. drWhy
        28.05.2019 16:52

        Чтобы смотреть все подряд — лучше использовать кодек паки или всеядные просмотрщики
        Голосую за второе. Установка кодек-паков (особенно нескольких, «для верности») чревата наличием в системе нескольких кодеков, условно подходящих для воспроизведения контента. Причём выбран будет не обязательно лучший и не всегда с оптимальными настройками.
        Ещё бывает, заканчивается триальный период какого-нибудь платного кодека, но пользователь не получает сообщения об этом или не может понять его смысла.
        В итоге, может перестать воспроизводиться определённый тип видеофайлов.


      1. 3Dvideo Автор
        28.05.2019 16:54
        +1

        Любое, повторю, ЛЮБОЕ пережатие между форматами с потерями ведет к деградации качества.
        С оговоркой на MotionJPEG и форматы сжатия с поддержкой режимов сжатия без потерь.

        Чем больше итераций пережатия будет, тем хуже будет качество материала.
        И тоже с оговоркой. Мы в свое время проводили эксперименты с многократным пережатием. Там есть тоже свои нюансы, ибо можно сжимать так, чтобы качество при пережатии почти не деградировало. Это свойство алгоритмов сжатия актуально при редактировании видеоматериала, когда хотелось бы держать материал сжатым, но минимально терять качество при итерациях редактирования. Минимизировать потери возможно, если об этом заботиться.

        А в целом — да, лучше пережимать пореже ), согласен совершенно.

        Скажу больше — если вообще не пережитьмать, то лет через 20 можно будет с большой вероятностью успешно увеличить разрешение материала (например, сделать HD из старой SD записи). При этом даже одна итерация пережатия кардинально снижает успех этого мероприятия.


        1. Eagle_NN
          30.05.2019 00:08
          +1

          То что это применимо только для алгоритмов с потерями я как раз и написал :)

          При пережатии другим кодеком с потерями качество будет всегда деградировать, т.к. происходит выполнение следующей последовательности:
          1) Оригинальное изображение
          2) Деградация качества для оптимальной работы кодека (например блочность, или разнесение на слои)
          3) При декодировании фильтры воспроизведения «додумывают» картинку, чтобы избавиться от артефактов
          4) Это «придуманное» изображение деградирует для оптимальной работы нового кодека (а если установлен режим Constant Quality, то и для такого-же кодека как и в пункте 2 будут выбираться другие зоны для деградации)
          5) При воспроизведении декодер опять «додумывает» изображение.

          Т.е. чем больше таких итераций, тем больше циклов деградации и «додумывания» (восстановления) будет. А значит оригинальной информации будет все меньше и меньше.


          1. 3Dvideo Автор
            30.05.2019 08:16

            На практике там скучные математические преобразования, а не «додумывание» )

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

            Тема слабо востребована, но она реализуема в рамках текущих стандартов.


            1. sumanai
              30.05.2019 11:05

              А нет ли однокнопочных программ для такого сжатия «без потерь»? А то для картинок есть.


              1. 3Dvideo Автор
                30.05.2019 11:29

                И даже для MotionJPEG есть. А так — не встречал.

                Повторюсь — мал спрос. По факту народ мало парится по поводу потерь, которые не видно на глаз. А то бы давно сделали)


                1. flashmozzg
                  30.05.2019 23:01

                  AV1 и hevc могут в Lossless. Но для этого спец. кодеки обычно разрабатываются, для архивов всяких.


                  1. 3Dvideo Автор
                    30.05.2019 23:02

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


              1. Javian
                31.05.2019 05:56

                Если говорить о «без потерь», то был кодек Huffyuv/Lagarith — что-то вроде сжатия архиватором каждого кадра ru.wikipedia.org/wiki/Huffyuv


  1. dsapsan
    28.05.2019 15:54

    К сожалению, такой подход (подлога) встречается довольно часто. Работал в одном полу-государственном НИИ, где все достижения на полном серьёзе именно так и презентовались. При этом дополнительно делалась ставка на максимальный охват — как можно больше публикаций, выступлений на конференциях, патентов. Причём, судя по тем же конференциям, такой подход вообще довольно популярен (по крайней мере в России).


    1. 3Dvideo Автор
      28.05.2019 16:44

      Печаль.
      Могу сказать две вещи:
      1. Сильно не везде в России так, довольно много мест, где реально все еще делом занимаются даже в госконторах.
      2. В Китае ситуация с фейковыми публикациями (особенно внутри) хуже чем у нас на порядок (если не сильнее). У нас, как ни странно, по крайней мере технические направления держатся.


      1. drWhy
        28.05.2019 17:00
        -1

        2. Зато в Китае уже есть система социального кредита.
        НИИ ССК — это звучит гордо.


        1. 3Dvideo Автор
          28.05.2019 17:08

          2 недели назад был в Пекине в Запретном городе. Такого количества нахальных самоуверенных громко говорящих колхозников, сколько на посещении Запретного города, я не видел никогда в жизни. Это толпы людей с одной извилиной (интеллект на лице не просматривается вообще), которых срочно надо как-то вводить в какие-то рамки. Коллега ехал на высокоскоростном поезде, был в шоке. Через 2 часа пол был весь в обертках от еды и т.д. Под конец поездки был натуральный свинарник, где все эти люди чувствовали себя крайне комфортно. И это все на скорости 300 км/ч в интерьерах из будущего. Не уверен, что социальный кредит их спасет, но они явно пытаются хоть что-то сделать ) Учитывая скорость роботизации Китая и скорость роста зарплат — это сверхнеобходимость. Возможно запоздавшая )))


          1. drWhy
            28.05.2019 17:21

            Да, тут скорее в консерватории что-то подправить надо…


          1. DistortNeo
            28.05.2019 23:14

            Никогда не был в Пекине. Видимо, и не поеду туда теперь. В других местах Китая (Чунцин, Чэнду, Ханчжоу, Циндао) было очень чисто и приятно находиться. Но это ещё и особенность Китая: не там чисто, где не мусорят, а там, где постоянно ходит дворник и тут же подбирает мусор.


  1. drWhy
    28.05.2019 17:20

    ошибся веткой.


  1. perfect_genius
    28.05.2019 17:24

    Существуют ли плееры, позволяющие проигрывать одновременно два видео и имеющий «шторку» посередине, чтобы мышкой перетягивать влево-вправо и сравнивать эти видео?


    1. maedv
      28.05.2019 17:42

      Примерно похож редактор VirtualDub2, два окна, в одном исходник, в другом после обработки на лету


    1. Tallefer
      28.05.2019 17:45

      Могу сильно наврать (давно дело было), но мне кажется, у автора статьи на сайте были как раз такие проги или плагины для плееров, которые позволяли еще и визуально посмотреть различия тестируемого материала :)


      1. 3Dvideo Автор
        28.05.2019 18:07
        +1

        Каюсь, есть такое )))


        1. perfect_genius
          28.05.2019 21:09

          Где он находится на вашем сайте?


          1. 3Dvideo Автор
            28.05.2019 22:46

            тут, в статье в последнем разделе была ссылка


    1. Pinguin
      28.05.2019 22:43

      beamr.com/h264-hevc-video-comparison-player


      1. perfect_genius
        29.05.2019 17:27

        Спасибо, таки кто-то додумался такое сделать.


  1. Javian
    28.05.2019 18:27

    off Пару недель назад развлекался сжиманием в HandBrake файла в DV. У меня этот DV-файл с видеокамеры давно лежит, пережив несколько ПК и HDD, и своего рода образец для измерения производительности ПК при кодировании видеокодеками в менее объемные файлы.
    Причина экспериментов с HandBrake — попалась на глаза на хабре статья от Intel о QuickSync Encoder. Действительно кодирует быстро, но если важно оригинальное качество, то лучше оставить в DV. x264 хоть с ускорением, хоть без, хоть с огромным битрейтом — артефакты сжатия оригинала можно найти.


  1. ofmetal
    28.05.2019 20:10

    Как я понимаю работу кодеков.
    Каждый кадр бьётся на блоки, и эти блоки (максимально похожие на них) ищутся в предыдущих (примерно 5, но можно и 16) кадрах радиально-недалеко (в 8 разных направлениях, но бывает и в 32) к текущему блоку. Блоки примерно от 4х4 до 64х64 пикселя. Блоки копируются (без афинных преобразований) как есть. Получившаяся разница кодируется дополнительно позже.

    Вопрос!
    Львиная доля видео в мире, это видео движущейся примерно вперёд камеры. Видеорегистраторы, квадрокоптеры, экшен-камеры. Где очередной кадр сильно похож на предыдущий, только «растянутый» слегка, а также на следующий кадр, только «растянутый» в обратном направлении. Интуитивно кажется, что применив здесь специализированнй подход — чтобы вся серия кадров строилась на однообразном простейшем преобразовании. Щепотки бит буквально достаточно для описания однообразного преобразования. Дополнительная разница с реальным кадром аналогично будет кодироваться позже.
    Реализовано ли такое где-то сейчас? Или разница между растянутым кадром и кадром с камеры, сдвинутой в пространстве, слишком велика и потребует сравнимого количества бит и поэтому такой подход не используется?


    1. 3Dvideo Автор
      28.05.2019 20:45

      Идея старая. И нерабочая. Глобальное преобразование на практике была попытка применить к кадру еще в расширениях MPEG-4 (которые благополучно умерли).

      По факту:

      Во-первых, все ощутимо сложнее. Например, есть B-frames, которые и повышают сжатие, и важны, когда идет навигация по файлу (и в которые вектора как с прошлых, так и с будущих кадров).

      Во-вторых, если картинка резкая, а не замыленная, то важны субпиксельные сдвиги. И нам важен блок, максимально похожий, например, с четвертьпиксельной точностью. Они находятся и это работает. Это сразу убивает вашу идею.

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

      Как-то так, если кратко.


      1. ofmetal
        28.05.2019 21:48

        Да, жаль. Стало быть, архив видео с квадрокоптера на 1.44" дискете не получится разместить)

        И тонкая настройка x264/x265 тоже наврядли лучше placebo (у них же) справится с такими видео?


        1. 3Dvideo Автор
          28.05.2019 22:51

          И тонкая настройка x264/x265 тоже наврядли лучше placebo (у них же) справится с такими видео?
          Может и лучше.

          Пример был в статье:
          image
          На этом видео звезды так легли, что можно сжать в разы быстрее placebo, причем примерно на треть сильнее при этом. Представление, что placebo обеспечивает максимально возможное сжатие (оно же так долго работает!) — это популярный миф.


          1. ofmetal
            29.05.2019 22:15

            На всякий случай спрошу, нет ли у вас готового ответа, на вопрос, какие настройки нужно подкрутить, чтобы квадрокпотерное видео (FHD и 4K) кодировалось быстрее и качественнее (кодеки x264 и x265)? Как на вашей картинке, например)

            Пробовал плацебо на x265 @ FHD — просто невозможно использовать, на 8+8 ядерном компе фпс сильно меньше 1 получался. Кодирую в Constant Quality, CRF=22 чтоли ставил.


            1. Javian
              30.05.2019 06:25

              попробуйте Intel Quick Sync habr.com/ru/company/intel/blog/311320
              Только проверьте качество результата.


              1. 3Dvideo Автор
                30.05.2019 08:02

                Да, в тестах участвовали много лет подряд и по соотношению скорость-качества в свое время всех порвали, как минимум пробовать стоит.


                1. Javian
                  30.05.2019 08:43

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


                  1. 3Dvideo Автор
                    30.05.2019 09:49

                    Если это места с сильным движением, то частично это параметрами лечится.

                    Вообще тема настройки — большая тема, к сожалению.


            1. 3Dvideo Автор
              30.05.2019 07:59
              +1

              На всякий случай спрошу, нет ли у вас готового ответа, на вопрос, какие настройки нужно подкрутить, чтобы квадрокпотерное видео (FHD и 4K) кодировалось быстрее и качественнее (кодеки x264 и x265)? Как на вашей картинке, например)
              Если бы был какой-то один волшебный пресет — его бы уже прошили в стандартные, т.е. на этот вопрос нет простого ответа.

              Вообще возможно стоит на эту тему отдельный пост. Разобрать мифы, обозначить возможности, разобрать сложности. Стоит писать?


              1. ofmetal
                30.05.2019 08:26

                Да, было бы очень круто, а то смотришь на эту груду параметров — многие каракули там ни о чём не говорят.


                1. 3Dvideo Автор
                  30.05.2019 09:52

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

                  К счастью, это не означает, что их нельзя подобрать и улучшить )

                  Но там масса сложностей, начиная с чисто вычислительной, увы…


    1. mkarev
      28.05.2019 21:48

      Реализовано ли такое где-то сейчас?

      В драфте VVC есть "affine motion compensation": https://jvet.hhi.fraunhofer.de/
      Работает ооочень медленно (енкодер)
      На сценах c вращением типа "In to tree" из стандартных тестовых последовательностей
      рвет в тряпки все классические блочные кодеры (прирост порядка +40% по BD-Rate)


      1. 3Dvideo Автор
        28.05.2019 23:27

        Посмотрел, кросс-чек Роман Черняк из русского Хуавей (а ранее — из Элекарда) делал, т.е. можно спросить, как оно вблизи и на разных видео выглядит. Ибо с ходу я что-то хорошего анализа что там не нашел. Кстати, предсказание остается блочным. И если я правильно распарсил
        www.researchgate.net/publication/328438797_An_Improved_Framework_of_Affine_Motion_Compensation_in_Video_Coding основной выигрыш таки за засчет субпиксельных сдвигов, однако теперь при поворотах )
        Вообще ранее от такого подхода отказались, поскольку он был неэффективен по соотношению затраченное время/результат. Посмотрим, что будет в этот раз. У них AV1 появился в сильных компетиторах. Спасибо за наводку!


      1. mkarev
        29.05.2019 04:10

        Поправка — сцена с движением "blue_sky" https://media.xiph.org/video/derf/
        PS: Я делал бенчмарки когда он был еще JEM'ом, но идея вроде как сохранилась


        1. 3Dvideo Автор
          29.05.2019 08:14

          А вы откуда? В России бенчмарки JEM мало кто делает. )


          1. mkarev
            29.05.2019 09:23

            Из Элекарда.


            1. 3Dvideo Автор
              29.05.2019 09:49

              «Узок их круг...» (с) ) Привет Элекарду!


  1. vk000
    29.05.2019 08:55

    Про это ещё есть блестящая старая статья Dark Shikari (одного из разработчиков x264 и эксперта по видеокодекам): «How to cheat on video encoder comparisons». Там прямо по косточкам разложено всё.

    (Ссылка на archive.fo потому что блог, увы, удалён. Вот тут есть сделанная кем-то копия текста, но там убилось форматирование.)


    1. 3Dvideo Автор
      29.05.2019 09:01

      Да, это отличный текст про следующие (менее увлекательные) уровни читинга при сравнении кодеков. И обратите внимание, как он жестко пишет о том, как компании себя измеряют ) (часто внаглую некорректно измеряя конкурента).

      Шикари нам массу предложений по изменению сравнения выкатил, мы многие реализовали. Интересно, что в целом это сделало сравнения совершенно непригодными для широкой публики (слишком много графиков), но профессионалы рады — картина (кто где реально лучше, кто где хуже) яснее.


  1. ValdikSS
    29.05.2019 23:22
    +1

    3DVideo, может, не совсем подходящая тема для вопроса, но какой кодек использовать для скринкастов?
    10 лет назад я писал скринкасты в Microsoft Video 1, в RGB555. 10 минут видео занимало 200-250 мегабайт, но ужималось компрессором до 1.5-2 мегабайт(!). Качество видео было постоянно высоким, и всё выглядело отлично, в т.ч. из-за отсутствия субдискретизации цвета.

    Аналогичное видео в VP9 или H.264 получается раза в 3-6 больше по размеру.
    Есть ли какой-то рекомендуемый кодек для скринкастов?


    1. 3Dvideo Автор
      30.05.2019 08:07

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

      Вообще думаем про отдельный пост с разбором оптимизации параметров под контент. Разобрать сложности, обозначить сколько можно наиграть, почему это сложно, как можно действовать на практике и т.д.

      Стоит писать? Какие вопросы были бы интересны?


      1. Tallefer
        30.05.2019 14:55

        Страдал точно такой же фигней, как и товарищ выше. :) И тоже остановился на каком-то кодеке, который потом винраром сжимался адски и вызывал поначалу этим легкий шок. :)
        Да, писать однозначно стоит, хотя бы ради вопроса качественных гуи-скринкастов, с динамичной картинкой-то в принципе все те же приемы, что и с живым видео.
        Просматривается некая аналогия с жпег против пнг, кстати. :)


        1. 3Dvideo Автор
          30.05.2019 23:00

          тоже остановился на каком-то кодеке, который потом винраром сжимался адски
          Ужас какой… Где вы такие берете…
          Да, писать однозначно стоит, хотя бы ради вопроса качественных гуи-скринкастов,
          Принято. Еще вопросы в теме, которые интересны, приветствуются.


          1. Tallefer
            31.05.2019 04:35

            Ну где-где… тут вариантов только два: либо это был встроенный в Камтазию кодек, либо один из тех, что идут в мегакодекпаке :)
            Что еще было круто, так это возможность установить всего 1 кадр в 30 секунд для предельной экономии места (записывал какую-то динамическую страницу).

            Во, вопрос кстати вспомнился в связи со скринкастами: примерно в то же время я нашел какую-то мелкую программу, которая писала скринкасты в файл формата флэша (ну почти как все), но — сжатие, в отличие от других, достигалось невероятное (заметнее всего — на почти статических моментах), и у меня вопрос частично по формату (программу ту я посеял и не смог найти снова с тех пор, о чем жалел не раз) — возможно ли, что та прога делала не просто сжатие картинки, а сперва анализировала геометрию оконного менеджера и, грубо говоря, записывала не тупо покадрово, а делала смещение прямоугольников при движении окон и других объектов по экрану и писала не просто видеопоток, а еще и описания всего? Ну почти как кодеки анализируют предыдущий и следующий кадр для лучшего сжатия. Ведь технически это не должно вызывать большие трудности, верно? :)


            1. 3Dvideo Автор
              31.05.2019 10:12

              Ведь технически это не должно вызывать большие трудности, верно? :)
              Если с конца начинать, то имейте ввиду, что обычно ответ на этот вопрос «нет» ))), особенно если легкие решения на каждом углу не лежат. Очень часто простые в постановке задачи сложно решаются.

              По поводу сжатия такого контента — есть даже отдельное направление — Screen Capture Codec, коих кодеков было создано довольно много (в том числе мы делали). И софта подобного тоже очень много. Там несколько параметров — и собственно их баланс и тюнингуется. Это если кратко. Если подробно — можно большой пост только про алгоритмическую часть написать.


            1. drWhy
              31.05.2019 13:03

              Анализировать геометрию уже отрисованных примитивов накладно (всякие градиенты, тени, субпиксельные эффекты). Но никто не мешает перехватывать все вызовы GUI, записывать их часть, соответствующую изменениям в зоне интереса, паковать, а при воспроизведении передавать обратно GUI для отрисовки. Плотность будет максимально возможная, нагрузка на cpu/gpu околонулевая, потребление памяти минимальное.
              Под Windows это довольно затруднительно, но есть ReactOS, Kolibri.

              Также существовали векторные дисплеи, отрисовывавшие вызовы аппаратно. Даже сейчас в драйверах устройств отображения под Windows есть набор флагов, соответствующих наличию реализации различных векторных функций. Если бы развитие подобных дисплеев продолжилось, офисный дисплей можно было бы подключать через com порт, а не hdmi. И, вероятно, офисный компьютер мог бы питаться от солнечной батареи, как калькулятор.

              Речь, конечно, только о графическом интерфейсе, офисные приложения без 3d и видео котиков в 4k.


  1. napa3um
    30.05.2019 03:54

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


    1. 3Dvideo Автор
      30.05.2019 08:11

      У вас хорошие поэтические аналогии! )

      Впрочем — судя по тому, что ежегодно успешно патентуется несколько идей вечных двигателей, отучили не всех. Да и в биологии ситуация не волшебна. Впрочем в нейросетях кратно хуже ))) Человеку свойственно верить в чудо.


    1. Tallefer
      30.05.2019 14:56

      А что, от нейросетей уже где-то отучают? У меня ощущение, что с каждым днем все только больше и больше хайпа становится. %)


      1. 3Dvideo Автор
        30.05.2019 22:58

        Пока нет, но пора ). Хотя до пика хайпа еще 3-4 года, похоже.


    1. masai
      31.05.2019 12:10

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

      В отличие от эликсира бессмертия, философского камня и вечных двигателей, нейронные сети — это рабочий инструмент, который успешно применяется на практике. Весь хайп из-за того, что неспециалисты не понимают их возможностей и границ применимости. Ну и название даёт некий налёт фантастичности, что тоже смущает обывателя.