«

»

Июл 17 2014

Распечатать Запись

Программное обеспечение FFMPEG и обработка видеопотоков

ffmpeg-video-audio Сегодня я бы хотел обратить ваше внимание на инструмент для обработки видео и аудио контента под названием FFMPEG. Наверно, каждый, кто имел отношение к обработке видео слышал или даже использовал данный инструмент, так как он позволяет сделать практически любое преобразование видеопотока, включая обработку различными кодеками, передачу по сети, запись в файл и т. д.

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

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

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

Пример 1

 В одном проекте требовалось из живого видеопотока, получаемого с видеокамеры, захватывать и сохранять как картинку каждый пятый кадр. Видеокамера была подключена к устройству видеозахвата Blackmagic Design Intensity Pro.

  • Первое, что необходимо сделать — это выяснить под каким именем FFMPEG распознал нашу карту или другое устройство directshow, с которым мы будем работать. Для этого в командной строке выполняем команду:

ffmpeg -list_devices true -f dshow -i dummy

  • После этого можно посмотреть доступные опции захвата с нашего устройства:

ffmpeg -f dshow -list_options true -i video='<название устройства>’

  • Далее представлена команда для захвата каждого пятого кадра в виде картинки с видеопотока:

ffmpeg -y -f dshow -i video='<название устройства>’ -s 1920×1080 -r 5 -f image2 images%05d.jpg

 Пример 2

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

  • Команда, выполняющая захват видеопотока с вебкамеры с разбиением его на 10-ти секундные ролики с составлением динамического плейлиста:

ffmpeg -f dshow -y -i video=’HP Webcam’ -r 25 -vcodec libx264 -threads 0 -hls_time 10 -hls_wrap 0 video.m3u8

  • В данном примере использовался модуль hls, но также для решения этой задачи и более гибких настроек можно использовать модуль segment:

ffmpeg -f dshow -y -i video=’HP Webcam’ -r 25 -vcodec libx264 -threads 0-flags -global_header -f segment -segment_time 10 -segment_list test.m3u8 -segment_format mpegts -map 0 stream%05d.ts

Заключение

 Было еще много других интересных задач, где мы прибегали к использованию FFMPEG, например, склеивание двух видеопотоков в один, рядом друг с другом и др. Возможно, в будущих статьях я приведу еще несколько актуальных примеров. Эта статья была написана и опубликована совместно c моим коллегой Евгением Кузьминым.

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

 Приглашаю подписаться на новости моей публичной страницы ВКонтакте, ее адрес http://vk.com/itmultimedia . Буду рад видеть Вас в своих подписчиках!

Всего хорошего!


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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>