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

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

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 (картинки с Википедии)

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

Домашнее видео для любителей командной строки. Часть 1.

vhs

Сейчас в любом домашнем архиве накопилось множество кассет записанных на древние видеокамеры типа VHS. Тогда это был единственный способо сделать свое кино. Были конечно и пленочные кинокамеры, но возиться с проявкой пленки хотелось не всем, поэтому “по пленочной кинокамере в каждый дом” как-то не пошло. Другое дело VHS, снял видео, подключил к телеку и сразу смотришь. Единственное, приходилось слегка “допилить” телевизор, посредством впайки в него дополнительной платы видеодекодера, переводящего буржуйский PAL сигнал в наш советский SECAM. Но это уже были мелочи. Эпоха декодеров длилась недолго, буквально через год-другой от них все отказались, потому что появились в штрокой продаже импортные телевизоры из Японии, Кореи и Германии, а там декодер уже не требовался.

И вот, наснимав горы видеокасет их посмотрели, сложили в коробочку и убрали в шкаф, на антресоли, в гараж, Прошло 10-15 лет, многие задались целью оцифровать эти кассеты, чтобы просматривать затем на iPad’ах, компьютерах и телефонах, выкладывать на YouTube, ВКонтактик и Одноклассники. Надо сказать, что в те времена, а пик VHS видео пришелся на 90-е годы, у населения были на руках любительские видеокамеры и как правило качество видео с них было, мягко говоря, не очень. Чтобы привести его к нормальному виду нужно потратить немало сил. Мы не будем убирать шум с видео, не будем шарпить, не будем править яркость/контраст или поднимать насыщенность. Мы будем делать другое. А именно, уплавнять движение. То есть вместо 25 кадров в секунду, сделаем видео с частотой 50 кадров в секунду. Между соседними кадрами исходного видео мы вставим еще один кадр. Изображение на этом кадре будет построено исходя из положения объектов на предыдущем и последующих кадров оригинального видео. Данное преобразование позволит значительно улучшить восприятие видеоконтента. Движения объектов станут плавнее, сами объекты в процессе движения станут четче, да и просто станет приятней смотреть. Некоторые скажут, что человеческий глаз может воспринимать только 25-30 кадров в секунду и более высокую частоту он не способен различить. Но это не так. Глаз способен различить гораздо большие частоты. И, как доказательство этому переход кинематографа на 50-60 кадров в секунду. Например, “Хоббит”, снят с технологией 60 кадров в секунду.
Итак, что нам для этого понадобится. Прежде чем перечислять, что же дальше понадобится скажу, что данный метод предназначен для людей имеющих некоторый опыт работы в командной строке, для тех кто знаком с тем что такое кодек, как обрабатывается изображение в общих чертах, как работают пакетные файлы. Иными словами для тех кто готов копаться, настраивать и запускать все из консоли. Я думаю такие люди найдутся, иначе бы много форумов в интернет просто бы пустовали 🙂 Мало того, все программное обеспечение предлагаемое в этой статье является свободно распространяемым, что в наше время является актуальным.
Читать дальше

Видеокодирование, рабочий процесс.

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

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

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

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

Не секрет, что самые смелые решения появляются зачастую в свободнораспространяемом програмном обеспечении, так почему бы не воспользоваться этими готовыми разработками. Цепочка Virtualdub, Avisynth, ffmpeg позволяет гибко и без напряга комбинировать все самое лучшее из этих программ.

Итак, общий процесс обработки видео представлен на следующем рисунке (я не художник, поэтому нарисовал, как мог):


процесс видокодирования
1-й этап: редактор (любой, например, Virtualdub)
2-й этап: Frameserver
3-й этап: Avisynth
4-й этап: кодирование видео

Теперь поподробнее про каждый этап.
Читать дальше

Многопроходное кодирование

Все, наверное, слышали термин “многопроходное сканирование”. И, как бы, создается ощущение, что многопроходное кодирование уж всяко лучше однопроходного. И это действительно так, кодер проходит по видео несколько раз (чаще всего 2) и после каждого прохода готовит информацию к своему будущему проходу, чтобы максимально эффективно сжимать видео, чтобы не разбазаривать драгоценный битрейт. Можно делать и однопроходное кодирование с большим постоянным битрейтом (чтобы уж наверняка все малюсенькие движения и деталюшечки зафиксировать), но это тоже не выход, ибо не всякий накопитель (HDD, DVD, флэшка) будет способен стравливать кодеку такие объемы информации непрерывно, без дерготни. Поэтому, IMHO, лучше кодировать в несколько проходов, тем самым добиваясь оптимального подбора битрейта по фильму. Далее приводится скрипт для Linux, который позволяет запустить многопроходное кодирование в MPEG2 с использованием бесплатного энкодера mplayer, о котором было написано ранее. В качестве параметра скрипту подается число проходов с которым надо кодировать.

Скрипт:
Читать дальше