Кодировать видео


x264 или как кодировать видео / Хабрахабр

Проблема с кодированием видео и его сжатием его из гигабайтов в мегабайты, по-моему, всегда была актуальной. Если более менее профессиональные операторы, монтажники и т.д. уже не одну кошку съели на этой теме, то например любители и те, кто записывают видео с экрана своего монитора, порой долго чешут затылок, прежде чем добиться каких либо серьезных результатов. В итоге куча потерянного времени, никому не нужные гигабайты исходящего трафика для загрузки домашнего видео на ютуб. Конечно, можно использовать в какой-то степени готовые решения в лице одной программы, и сжать видео буквально тремя кликами, но это не наш подход, когда абсолютно все шаги можно контролировать и влиять на них. Покопавшись в поиске, Хабр так и не выдал ничего похожего. Хотя возможно, что просто плохо поискал. Сразу оговорюсь, что изначально статья не моя. Я наткнулся на неё, лет пять назад, когда встала задача что-то делать с записанными моментами из тогда любимой многими игры Battlefield 2, на популярном отечественном ресурсе мувимейкеров. Постепенно статья допиливалась и публиковалась, то там, то там. Не исключаю, что первоначально статья пришла из-за «бугра» и всего на всего была переведена на наш могучий язык.

Итак, кодек х264 пришел на смену таким монстрам своего времени как DivX и XviD и удачно положил обоих на лопатки. Для того, что бы добиться действительно впечатляющего результата, нам понадобится следующие вещи: 1. MeGUI — этим мы сжимаем само видео. Вернее, сжимает сам кодек, а это только GUI объединивший в себе десятки разных специализированных утилит. 2. Avisynth — фреймсервер. Если вдруг кто не знает, что это такое, то он является посредником между нашим не сжатым видео и кодеком. 3. VLC media player — Тут совсем все просто. Всеядный плеер, умеющий работать с потоковым видео. Достаточно популярный. 4. K-Lite Codec Pack — пакет все возможных кодеков, на все случаи жизни. Нам нужна сборка Mega.

Настоятельно рекомендую обновлять K-Lite Codec Pack, как минимум всегда перед сжатием видео. Это конечно не обязательно, но опыт подсказывает, что если вы столкнетесь с непонятными ошибками/косяками/глюками/etc то в 50%, а то и больше, обновление кодеков избавит вас от лишнего геморроя. Кстати, MeGUI достаточно быстро и часто обновляется и дополняется. Скриншоты приведенные ниже, могут уже не соответствовать текущей версии, но это не страшно. Как правило, меняется расположение элементов, что то пододвинули вправо, что-то перенесли в другую закладку. Пропажа находится очень быстро, поэтому не пугайтесь.

Поехали. Устанавливаем Avisynth, а затем MeGUI. После того, как MeGUI обновится, идем в папку, где лежит наш опытный образец, и для удобства создаем там файл с расширением *.avs. Открываем блокнотом и пишем заветные строки:

AVISource(«video.avi») ConvertToYV12()

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

Существует несколько различных способов представление цвета. Например: цветовое пространство YUV и RGB. В YUV цветовом пространстве есть один компонент, который представляет яркость (сигнал яркости) и два других компонента, которые представляют цвет (сигнал цветности). В то время как яркость передается со всеми деталями, некоторые детали в компонентах сигнала цветности могут быть удалены путем понижения разрешения отсчетов (фильтрация или усреднение), что может быть сделано несколькими способами (т.е. есть много форматов для сохранения изображения в цветовом пространстве YUV). YV12 — один из таких форматов (тут сигнал цветности общий для каждого блока пиксел 2x2), который поддерживается AviSynth.

У нас получился скрипт. Идем дальше. Открываем MeGUI и указываем месторасположение скрипта. Если скрипт AviSynth находится в той же папке где и ваше видео, то вторая строка заполнится автоматически.

Открываем настройки кодека, нажатием на кнопку Config, справа от Encoder settings. Ставим галочку, подтверждая, что нам действительно нужны расширенные настройки. Дальше нам остается поставить галочки в соответствии со скриншотами.

Нажимаем на кнопку queue и идем спать, пить кофе и т.д. в зависимости от предпочтений и мощностей ПК.

Хочу оговориться, что данный конфиг подходит для исходного видео 720p. Для 1080p нужно немного под редактировать конфиг:

Вкладка Frame-Type -> Меняем значение Number of Reference Frames с 9 на 4.

Так же можно указать, сколько кодеру можно использовать ядер:

Вкладка Misc -> раздел Other -> Threads и указываем, в сколько потоков сжимать видео. 1 поток на 1 виртуальное или физическое ядро.

Что мы получаем в итоге. Я имел в наличии следующий видео-ролик:

Format: RGB Codec ID: 0x00000000 Codec ID/Info: Basic Windows bitmap format. 1, 4 and 8 bpp versions are palettised. 16, 24 and 32bpp contain raw RGB samples Duration: 3mn 42s Bit rate: 663 Mbps Width: 1 280 pixels Height: 720 pixels Display aspect ratio: 16:9 Frame rate: 29.970 fps Bit depth: 8 bits Bits/(Pixel*Frame): 24.000 Stream size: 17.2 GiB (100%)

После ожидания около 15-16 минут, я получил на выходе 184 Мб.

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

habrahabr.ru

Как кодировать видео программой Total Video Converter?

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

Хорошо зарекомендовала себя программа E.M.Total Video Converter HD позволяющая кодировать видео в форматы avi, mp4, 3gp, наиболее часто используемые в телефонах, а также во многие другие. Также поддерживаются различные форматы аудиофайлов.

Для кодирования видео совсем не обязательно покупать мощный ноутбук для графики, как по этой ссылке http://bukibuki.ru/noutbuki/dlya-grafiki/. Даже старенький компьютер справится с такой задачей, только займет это намного больше времени.

При создании новой задачи сразу же выскакивает меню выбора желаемого формата получаемого файла.

Также предусмотрена возможность создания и записи DVD видео дисков.

Посмотрим пример кодирования видео со следующими характеристиками на выходе: размер экрана устройства 320х240, формат видео AVI, поддерживаемый видео кодек Xvid, аудио mp3.

Произведем необходимые настройки кодирования.

При выборе качества видеопотока пользуемся правилом: разрешение изображения разделить на 150. В нашем случае 320*240=76800 пикселей. 76800/150=512 kbps.

Если соотношение сторон изображения исходного файла не соответствует стандартным 4:3 или 16:9, то лучше пересчитать самостоятельно и указать пользовательский размер изображения. В противном случае картинка будет искажена, вписываясь в выбранный размер. Исходный файл имеет размер картинки 704х384. Берем наибольшую сторону необходимого нам размера (320), наибольшую сторону оригинального файла (704) и находим коэффициент. 704/320=2,2. Находим меньшую необходимую нам сторону, используя полученный коэффициент 384/2,2=174,5. Полученные значения вписываем в графу «пользовательский размер видео» 320х174.

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

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

Так же статьи на сайте chajnikam.ru:Как создать скрин экрана?Как подобрать компьютер?Как преобразовать видео в avi программой Wondershare video converter?Чем сжать видео?

chajnikam.ru

Распределенное кодирование видео / Хабрахабр

Думаю, большинству хабрапользователей хоть раз да приходилось кодировать видео. Возможно, вы хотели посмотреть свежую серию любимого сериала в метро, а ваш смартфон или иное портативное устройство никак не хотело играть этот кодек, или SmartTV отказывался декодировать звук в видеофайле, либо же вы застряли в 2004 и транскодировали H.264 в MPEG-4 для вашего старого DVD-проигрывателя. Или же, например, сжимали невероятного размера видео, снятое фотоаппаратом, во что-то более-менее приличное по размеру. Наверняка вы замечали, что это не самый быстрый процесс.

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

Что вообще следует понимать под распределенным кодированием видео? В моем представлении, есть 2 разных задачи:

  1. Кодирование большого количества видеофайлов на множестве компьютеров одновременно
  2. Кодирование одного видеофайла по частям на множестве компьютеров одновременно
Первая задача подразумевает наличие большого количества видеофайлов, сильно больше, чем компьютеров, на которых их можно кодировать, и довольно легко автоматизируется с использованием CLI-кодировщиков, например, HandBrake или FFmpeg и любых средств автоматизации, которые поддерживают распределение, вроде GNU Parallel или PPSS (к слову, о нем мало кто знает, рекомендую!).

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

Обычно, мне нужно кодировать 1-2 10-битных видеофайла, закодированных кодеком H.264, в 8-битные, с пресетом medium, slow или slower. Как правило, на одну минуту видео требуется 6-8 минут кодирования. Хотелось бы быстрее.

Глоссарий
GOP (Group of Pictures) — буквально, группа изображений. Часть кадров от одного I-frame (ключевого кадра) до другого, не включая последний.Worker — программа, которая выполняет какую-то работу (как правило, самую затратную) в распределенной системе. В нашем случае — кодирование видео.
Готовые решения
Я несколько дней искал живые проекты по распределенному кодированию обоих задач, и вот что я нашел:1. MediaCoder MediaCoder — достаточно продвинутый и удобный комбайн, неплохо балансирующий между количеством настроек и легкостью использования. Однако, распределенное кодирование в нем реализовано хуже некуда: декодируется видео локально, а worker отправляется несжатый декодированный фрейм. Рекомендуют гигабитную сеть, так что через интернет это будет работать невероятно медленно. Сервер работает только под Windows (и еще в Wine), worker работает под Windows и Linux. Поддерживается только H.264 и VP8.

2. dvd::rip Методы распределения в этом проекте, к сожалению, ничем не лучше, чем с использованием обычных средств распределения. Вам нужно будет поднять SSH-сервер на каждой машине и NFS-сервер на машине с файлами. Не умеет кодировать один файл на нескольких компьютерах.

3. Ripbot264 Лучшее, что я видел. Правильно режет файлы (по GOP), удобно настраивается, но, к сожалению, использует средства общего доступа к файлам Windows, что практически исключает работу вне одной сети (программа требует, чтобы все компьютеры были в одной рабочей группе). И работает только в Windows.

Создание своего велосипеда
К сожалению, под Linux ничего сносного не нашел и загорелся идеей сделать свое. Какие требования я выдвигал к распределенной системе кодирования видео?
  • Система должна уметь кодировать один файл на нескольких workers (разрезка файла по GOP и последующая склейка обратно)
  • Должно поддерживаться как можно большее количество декодеров, энкодеров и контейнеров (как минимум, mkv и mp4)
  • По возможности, избегать создание временны́х файлов и минимизировать потребление RAM на workers
Для кодирования видео решил использовать FFmpeg, а для разрезания и склейки файлов mkvmerge, и, соответственно, контейнер matroska (т.к. в процессе испытывания FFmpeg вылезла регрессия в mkv-муксере). Переписывал я проект 6 раз. Какие идеи были отброшены:
  • Использование Job Server (Gearman, Beanstalkd) и Message Broker (RabbitMQ) для передачи кусков видео для кодирования внутри Job. Это, конечно, очень удобно, но хранить куски исходного и перекодированного файла в памяти я себе позволить не мог. К тому же, сначала нужно было получить видео полностью, затем перекодировать его, и только потом отправлять.
  • Использование RPC по той же причине
  • Использование HTTP-сервера для отдачи и получения файлов
И все вернулось к сокетам. Действительно, лучше сокетов здесь тяжело что-то придумать — сокет можно подать как на stdin FFmpeg, так и на stdout, и никаких временны́х файлов не будет создаваться, и оперативной памяти расходуется по минимуму, и скодированное видео загружается сразу на сервер.

И я это сделал.github.com/ValdikSS/distvidc — DistVIDc (типа distcc, только для видео) Я использовал Rage Driven Development, и знатно расслабился, когда получил первую рабочую версию и первый коммит.

Как оно работает?
Есть три скрипта — server, client и worker. Server ждет файл и параметрами кодирования от client, режет его на куски, распределяет между worker, отдает части и принимает переконверченные куски, собирает куски в файл. Worker, соответственно, подключается к серверу, ждет команды и кодирует куски.

Проблемы:

  • Видео с переменной кадровой частотой (VFR), скорее всего, будет кодироваться неправильно и рассинхронизироваться
  • Эффективность кодирования получается немного меньше из-за того, что на конце разрезанного куска GOP может быть меньше, чем он мог бы быть без разрезки
Положительные стороны:
  • Можно подавать на вход и получать на выходе все, что поддерживается проектом FFmpeg. Theora в ogg в VP8 в webm? Без проблем. Богом забытый msmpeg2 в avi в HEVC в mkv? Да запросто!
  • Эффективная работа worker. Потребляется всего около 200КБ оперативной памяти!
DistVIDc будет работать как под Linux, так и под Windows (на данный момент, worker работает только под Linux). Буду рад любому, кто заинтересуется проектом.

habrahabr.ru

Как кодировать видео? - Софт

Как кодировать видео в другой формат. Или запускаем фильмы на всех устройствах.

 Для начала давайте разберемся что такое аудио\видео формат. Формат файла зависит от того, каким кодеком он сформирован, что бы все поняли о чем идет речь, объясню Вам так: например есть слово "автомобиль” мы все прекрасно знаем что это слово означает но если мы скажем "car” (автомобиль на английском языке) то большая часть людей уже может и не понять, что за слово из трех букв и что под ним подозревается. Точно также и с форматами, если видео сформировано таким кодеком который наш компьютер "понимает” то наш файл успешно запуститься, а если не понимает то мы увидим окно с ошибкой о неизвестном аудио\видео формате.

 Почему формат так важен?

 Дело в том, что кроме нашего любимого компьютера, на котором все проблемы решаются парой кликов мыши, существуют еще и другие устройства на которых можно смотреть видео и прослушивать аудио. Но в отличии от компьютера они могут читать только те форматы, которые изначально запрограммированы в их памяти. Например DVD-проигрыватели, мобильные телефоны mp3 и мр4-плееры и многие другие устройства могут воспроизвести всего от 2 до 10 наиболее распространенных форматов в отличии от компьютера, где установив набор кодеков, и 1000 форматов не предел. Именно из-за этих ограничений в количестве форматов и возникают проблемы с запуском фильмов и музыки на таких устройствах.

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

 Кодируем

 Чтобы изменить формат файла нам понадобиться кодировщик. Их количество очень большое от самых простеньких до профессиональных с множеством функций и настроек. Мы же будем использовать простой кодировщик который называется ImTOO 3GP Video Converter. Этот кодировщик простой, удобный и универсальный так как с его помощью можно перекодировать видео которое можно будет запустить как на компьютере так и на мобильном телефоне, мр-4 плеере и DVD-проигрыватели. Устанавливаем данную программу, запускаем и видим главное окно. Для того чтобы добавить файл для кодирования нужно нажать кнопку "Add” в проводнике найти нужный файл и нажать "Oткрыть”:

 

В главном окне программы добавиться Ваш файл:

 

Как видим, программа определяет имя файла, время продолжительности, исходный формат (Type) и формат в который нужно перекодировать (Target):

 

Для того что бы изменить формат, выделите файл в окне программы и в поле "Profile” выберите нужный Вам формат:

 

После изменений обязательно проверьте изменения здесь:

          

После этого Вы можете нажимать кнопку "Encode” после чего начнется кодирование файла:

          

По окончании кодирования, Вы сможете найти Ваш файл по указанному в программе пути:

                     

Переходим в папку C:\Temp и находим наш файл:

         

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

Удачи!

www.vashmirpc.ru

Программы для кодировки видео

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

«До чего дошел прогресс: видеомагнитофон с телевизором умещаются на ладони», — такие слова мы нередко слышим от людей старшего поколения. Результаты миниатюризации сейчас можно увидеть во всем, что иметь отношение к сфере развлечений и связи.

Кодирование музыки

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

Кодирование фильмов

С фильмами все обстоит еще сложнее: нужно знать не только параметры видео, которые поддерживает портативное устройство, но и способы «подогнать» под них имеющийся материал. Подготовку видео можно разделить на два типа: конвертирование DVD с фильмом в соответствующий формат и преобразование готового видеофайла, который по каким-то причинам не воссоздается, например, на КПК, в поддерживаемый этим устройством формат.

Видео кодеки

Почему же нельзя просто взять имеющийся файл и воспроизвести его на своем мобильном устройстве? Причиной «забастовки» плеера может стать отсутствие нужного кодека, а также слишком высокое разрешение или битрейт фильма, из-за которых устройство не может обработать предложенное видео. Это напрямую относится к устройствам, оснащенным процессорами с тактовой частотой 300-400 МГц. Более мощные модели (520 — 624 МГц) способны справиться с большинством фильмов без перекодирования даже при размере экрана 640х480 точек.

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

XviD4PSP

Условия распространения: бесплатно. XviD4PSP является мультиформатным конвертером. Эта программа создана на движке AviSynth и разрешает создавать файлы для Хbох 360, PSP, PS3, iPhone, iPod, iPod Touch, PC, Hardware DVD, Apple TV. Кроме этого, допустимо импортирование 26 форматов, а экспортировать данные разрешается в 19 форматов. Для того чтобы избежать вероятных проблем, советуем вначале поставить пакет К-Lite Codec Pack, а затем уже XviD4PSP.

Программа разрешает кодировать как отдельные файлы, так и несколько подряд. Кроме того, можно соединить в один фильм несколько видеороликов, выбрав в верхнем меню «Файл — присоединить файл». Разрешение и битрейт всех фрагментов должны быть одинаковыми.

Изменить размер кадра

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

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

PocketDivXEncoder

Условия распространения: бесплатно. PocketDivXEncoder — настоящая находка для обладателей КПК и портативных плееров, поддерживающих воспроизведение видео в формате AVI. Она разрешает конвертировать файлы OGM или AVI в DivX, адаптированный под экраны смартфонов (220×164точек) и КПК (от QVGA, 320х240 точек, до VGA, 640х480 точек).

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

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

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

Кстати, программа разрешает обрезать фильм в начале и в конце — например, удалить титры, чтобы уменьшить объем конечного файла. Это особенно полезно при кодировании сериалов.

Пакетная обработка файлов

Еще одной особенностью PocketDivXEncoder является поддержка пакетной обработки файлов.

Из минусов стоит обозначить невозможность работы с форматом DVD. Кроме того, PocketDivXEncoder, к сожалению, не умеет склеивать видеоролики. В остальном эта программа является отличным инструментом для быстрого перекодирования «тяжелых» AVI-файлов и их оптимизации под конкретное мобильное устройство. С ней справится даже ленивый пользователь, которому понадобится всего три клика мышью, чтобы желаемый фильм без проблем воссоздавался на коммуникаторе или смартфоне. Кроме того, программа распространяется бесплатно, а ее интерфейс полностью русифицирован.

answit.com


Смотрите также