FFServer – Организация вещания с web-камеры (Debian)

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

Решение задачки оказалось достаточно простое. Для реализации задуманного понадобились всего 2 софтины: ffmpeg и video4linux2 (v4l2).

Ffmpeg ставится сразу с несколькими утилитами, из которых мне понадобились 2: ffmpeg и ffserver

Шаг 1: Подготовка софта и оборудования

Чтобы поставить самый новый пакет ffmpeg, подключил их официальный репозиторий (смотреть тут: Debian 6 – Дополнительные репозитарии)
Установка:

Для удобной настройки web-камеры полезно установить утилиты v4l-conf и v4l-utils:

Теперь можно считать, что установка софта завершена в полной мере и сейчас желательно подключить (или переподключить) web-камеру.

Перед началом настройки сервера вещания необходимо проверить настройки web-камеры.
Чтобы посмотреть список подключенных в данный момент видео устройств, воспользуемся утилитой v4l2-ctl (она уже должна стоять):

Как видно из ответа, подключены 2 web-камеры: video1 и video0
Утилитой v4l2-ctl можно получить список настраиваемых параметров камеры, и установить любое значение в эти параметры.
На самом деле, пользоваться этой утилитой очень просто. Она маленькая, простая лаконичная, и обычная справка v4l2-ctl –help ответит на все вопросы.
Скажу лишь, что мне пришлось через нее только проставить более высокое разрешение на камере и все, больше никаких действий не потребовалось.

Шаг 2: Настройка сервера

Для организации вещания в пакет ffmpeg входит утилита ffserver. Она достаточно проста в настройке и при этом имеет мощный функционал.

Суть работы очень проста. При запуске ffserver он анализирует свой файл настроек и на основе него создает feed.
Feed в конфигурационном файле имеет всего 3 важных параметра (4ый Launch не обязательный):

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

Конфигурация ffserver по умолчанию расположена тут /etc/ffserver.conf
В моем случае, используется один фид и один поток.
Пример моей конфигурации ffserver.conf:

После настройки ffserver.conf можно пробовать запускать сервер:

-d – для вывода статусных сообщений, можно убрать.

При успешном запуске должна вывестись некоторая информация и в конце: FFserver started.
Если FFserver не запустился из-за ошибки в конфиге, он выдаст соответствующее предупреждение.

Чтобы не держать консоль с запущенным сервером постоянно открытой, запускать сервер удобно в виртуальной вкладке при помощи утилиты screen, или в качестве демона (сам не пробовал).

Шаг 3: Подача данных на источник ffserver с камеры, вывод плеера

Запуск сервера это только пол дела, сам по себе он видео генерировать не будет, мы только настроили в нем место (feed), куда его надо поставлять.

А поставлять туда видео будет сам ffmpeg. Пример запуска этого процесса, как было в моем случае:

Я тут указываю разрешение, скорость кадров fps (-r 30), видео устройство (/dev/video0), и адрес на источник feed, куда выполнять отправку видео с камеры: http://127.0.0.1:8090/webcam.ffm

Все, после запуска последней рассмотренной команды, можно пробовать смотреть онлайн видео на страничке сайта.

Для вывода плеера на страничке, достаточно указать такой код:

Просмотров : 22677
Запись опубликована в рубрике Debian, Linux с метками , , , , , , . Добавьте в закладки постоянную ссылку.

Один комментарий: FFServer – Организация вещания с web-камеры (Debian)

  1. 12 говорит:

    пробывал в винде начать трансляцию с юсб камеры. не осилил момент как её обозначить в строке с параметрами

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

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