VLC и HEVC, Windows и Linux

Потихоньку начинают появляться фильмы закодированные в формат hevc. Многообещающий формат, который должен прийти на замену старому, доброму H.264. Загружаю я сериальчик, а там бац, квадраты. Проигрыватель VLC под Windows 10 не справляется с видеопотоком (не успевает его раскодировать), поэтому картинка рассыпается, на так называемые, серые квадраты. Попробовал в Windows Media Player, то же самое.
Открываю MediaInfo, смотрю свойства файла. FullHD, 2,8MB/s, 24 кадра в секунду, кодек x265. Вроде бы все как надо. А ноутбук с процессором Intel i-3 не справляется. Вот тебе и новый формат. Попробовал отключить антивирус, чтобы ресурсы не занимал, все равно квадраты. Попробовал ползунком в VLC повозить туда-сюда, чтобы видео подгрузить в кэш, все равно квадраты. Выключил весь постпроцессинг в VLC, все равно квадраты.



VLC, H.265, Windows

Решил перезагрузиться в Linux (у меня там тоже VLC устанволен) и попробовать там посмотреть эту киношку.



VLC, H.265, Linux

В Linux все идеально. Тот же самый проигрыватель (даже версия одинаковая), тот же ноутбук. Но видео проигрывается только в Linux.

 

Необходимые инструменты для работы с видео

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

x264
http://download.videolan.org/pub/videolan/x264/binaries/

Mplayer и Mencoder
http://mplayerwin.sourceforge.net/downloads.html

FFmpeg
https://ffmpeg.zeranoe.com/builds/

Что такое метрики и для чего они нужны

Представьте себе такую ситуацию, вы сняли видео, отредактировали его и выложили в сеть для общего доступа. Но вместо хвалебных отзывов и лайков вы слышите о каких-то “квадратах”, “jpeg артефактах” и “пластилине”. На ваш взгляд видео получилось идеальное, зрители в свою очередь имеют прямо противоположное мнение. Или оцифровали вы домашний видеоархив, а через несколько лет, просматривая видео вы понимаете, что сжимать нужно было с другими настройками кодека тогда можно было бы вытянуть больше деталей из исходного видео. Или сжали видео с избыточным битрейтом с той целью, чтобы максимально близко быть к исходнику, а видео в итоге лагает, из-за того, что дисковая подсистема не может своевременно подкачать данные в буфер для непрерывного проигрывания потока. Всех перечисленных случаев можно было бы избежать если бы при выборе битрейта для кодека мы воспользовались некими математическими формулами, которые бы позволили исключить субъективное мнение и позволили бы правильно выбрать подход к кодированию видео. А факторов в кодировании приходится учитывать много, основные это тип кодека, режим кодирования, размер битрейта. В итоге получается, что кодирование это функция нескольких переменных f(x1, x2, x3,…, xn). И чтобы получить наилучшее значение этой функции на нашем видео мы должны руководствоваться некими правилами, которые подскажут нам как выбрать параметры кодирования x1…,xn чтобы получить максимально близкий к идеальному результат без тыкания пальцем в небо. Вот эти самые правила и есть метрики. Метрика – это сухая математическая формула, результатом которой есть число, указывающее отличие одного изображение от другого, в нашем случае это кадр закодированного видео и исходного.
Например формула для метрики может выглядеть вот так:


PSNR
Простейшая формула для PSNR (картинки с Википедии)

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

Разложить видео на кадры и собрать обратно

Все знают, что любое видео состоит из отдельных картинок проигрывающихся с различной скоростью (24, 30, 60 картинок в секунду). Принято эти картинки называть кадрами или фрэймами (frames). Часто видеопоток не готов для создания фильма. Например, слишком зашумленное изображение, искажены цвета, царапины на оцифрованных VHS записях и так далее. Для борьбы с перечисленными нюансами есть множество фильтров для обработки видеопотока, которые интегрированы в видеоредакторы. Но не всегда этих фильтров достаточно для обработки видео. Например, в каком-то фоторедакторе, например GIMP или ImageMagick есть крутой фильтр по очистке изображения от шума, но работает он с отдельной картинкой, а не с видеопотоком. Выход есть. Этот фильтр можно прикрутить и к видео.  Если видеоролик не очень длинный, то можно раскидать его на отдельные кадры и применить к ним фильтрацию, а затем все собрать воедино. Сделать это можно множеством способов, но мы рассмотрим, как это делается при помощи MEncoder.

mplayer -vo png video.mov

Эта команда записывает видеоролик video.mov в виде множества отдельных кадров с расширением png. После этого мы обрабатываем эти кадры, а затем, с помощью следующей команды:

mencoder mf://*.png -mf w=1280:h=720:fps=30:type=png -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=9000000:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2:keyint=30 -vf scale=640:380 -force-avi-aspect 16:9 -o video3.avi

мы склеиваем кадры обратно в видеопоток.

HEVC или H.265

hevc

Гонка кодеков продолжается. На этот раз в центре внимания формат HEVC (High-EfficiencyVideoCoding), он же H.265. Обещают, что жмет в 2 раза лучше H.264 и в 4 раза MPEG-2. Проектировался для видео 4K и даже для 8K. Есть уже бесплатная версия x.265 кодера, поддерживающая данный формат, но пока она находится в стадии альфа тестирования и еще далека от идеала. Требования к железу у этого кодера высокие, еще бы, перелопачивать такие объемы информации. Ну вообщем, не успели привыкнуть к H.264, а тут уже H.265 надо изучать.

h264-hevc_com