Поддержи Openmeetings

вторник, 4 ноября 2014 г.

Простейшая обработка видео записей

Возможно, многие знают и используют программу Flash Media Live Encoder. Она позволяет делать онлайн трансляции и запись транслируемого видео с помощью двух видео кодеков VP6 и h264. VP6 является менее требовательным к ресурсам компьютера, на котором он работает, однако, наиболее подходящим кодировщиком в плане качества записи видео является кодек h264. Данный кодек дает лучшую картинку в сравнении с другими при том же битрейте. А текущее развитие современных компьютеров позволяет использовать его без опасений о нехватке вычислительных мощностей.

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

Bстает вопрос: «И что теперь делать с этим файлом?»

Поиск решения

Давайте поймем какие задачи нам надо решить:

  • Обрезать в начале и в конце ролика части с включением и выключением видео записи и возможными заминками
  • Сконвертировать, чтобы flash–плеер смог проигрывать видео ролик
  • Выложить на сайт

Один из варианов решения — искать хороший видео редактор, но хорошие видео редакторы обычно дорого стоят. А простые бесплатные чаще всего работают только с форматом несжатого видео (т.е. вам будет нужно много дискового пространства) или только с популярными форматами, например, c AVI. Платить денег, я думаю, вам не хочется, и вот вы пробуете простой редактор плюс перекодировщик видео. Схема вашей работы выглядит следующим образом: f4v–>avi–>Обрезка видео–>flv. Так работать можно, но вы делаете конвертирование видео два раза, это занимает довольно много времени и в теории портит качество картинки.

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

Необходимые инструменты

Итак, нам понадобятся следующие инструменты:

  • FFmpeg с поддержкой кодека h264 — программа для работы с видео из консоли.
  • flvmeta — это программа для добавления мета информации в файлы .flv. Это нужно для того, чтобы во flash–плеере работала перемотка, т.к. не будешь же постоянно просматривать всю запись.
  • Тестовая страничка с flash–плеером — для просмотра получающегося ролика.

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

Обработка видео

В примере будем все делать в локальной папке, куда мы предварительно закачали исходный файл с роликом. Итак, предварительная подготовка файла:
ffmpeg -i имя_оригинального_файла.f4v -acodec copy -vcodec copy имя_временного_файла.flv
либо, если не сработал первый вариант, то
ffmpeg -i имя_оригинального_файла.f4v -acodec libfaac -ab 48k -vcodec copy -y имя_временного_файла.flv
и потом
flvmeta имя_временного_файла.flv имя_временного_файла.meta.flv

Вставляем в flash–плеер путь до получившегося файла. Просматриваем ролик и определяем, сколько нужно обрезать в начале ролика и в конце. Допустим, в нашем видео надо обрезать с начала 3 минуты 40 секунд и в конце на 43 минуте 14 секунде. Тогда получается, что наш ролик станет длинной 39 минут 34 секунды.

Обрезаем видео с начала и до определенного момента:
ffmpeg -i имя_оригинального_файла.f4v -acodec copy -vcodec copy -ss 00:03:40 -t 00:39:34 имя_выходного_файла.flv
здесь 3:40 — это отступ от начала исходного ролика, а 39:34 — длительность будущего ролика. После этого надо снова добавить мета информацию, чтоб можно было проматывать ролик в flash–плеере. Как можно заметить из примера, мы обрезаем именно оригинальный файл, то есть у нас нет лишних перекодировок видео.
flvmeta имя_выходного_файла.flv имя_выходного_файла.meta.flv

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

Итого

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

Комментариев нет :

Отправить комментарий