Поиск






Вторник, 21.05.2024, 21:52

| RSS

ОТДЕЛ
ИНФОРМАЦИОННЫХ
ТЕХНОЛОГИЙ
 
Каталог статей


Главная » Статьи » Интересные статьи

Организация трансляции потока с веб-камеры с помощью ffserver

Организация трансляции потока с веб-камеры с помощью ffserver

MooSE 2010-03-28 20:45:46

Иногда возникает задача организации трансляции видеопотока с веб-камеры в сеть. Наиболее популярным инструментом для организации такой трансляции является VLC, однако с некоторых пор в составе проекта ffmpeg разрабатывается проект ffserver, позволяющий решать туже самую задачу и имеющий более удобный способ конфигурирования. Далее будет показан пример использования ffserver для организации трансляции с веб-камеры.

Уточним начальные условия:

  • Сервер под управлением Ubuntu Server 9.10;
  • Веб-камера Skypemate WC-103M, подключенная к серверу.

Задача: организовать трансляцию с камеры по http в формате flv с возможностью встраивания изображения с камеры в веб-страницы.

Одной из интересных особенностей ffserver является то, что он не транслирует поток сам, а ретранслирует поток с другого источника (примерно так же, как это делает icecast). В связи с этим обычно описывают конфигурации, в которых отдельно сначала запускает ffserver, а потом источник потока (чаще всего ffmpeg). Мы же будем использовать конфигурацию, в которой ffserver сам запускает источник потока.

Приступаем к решению. Для начала установим пакет ffmpeg (ffserver является его частью):

apt-get install ffmpeg

Сразу после установки приступаем к конфигурированию. Для решения задачи достаточно привести файл "/etc/ffserver.conf" к следующему виду:

# Порт, на котором будет работать ffserver
Port 12345

# Адрес, на котором будет работать ffserver.
# Если указать 0.0.0.0 то будут использованы все доступные адреса
BindAddress 0.0.0.0

# Максимальное количество обслуживаемых соединений
MaxHTTPConnections 2000

# Максимальное количество клиентов
MaxClients 1000

# Максимальная используемая полоса (в килобитах)
MaxBandwidth 1000

# Файл журнала. Формат подобен формату лога apache
CustomLog /var/log/ffserver-access.log

# Описываем источник
<Feed webcam.ffm>
# Временный файл для хранения промежуточных данных
File /tmp/webcam.ffm
# Максимальный размер файла с промежуточными данными
FileMaxSize 3M
# Команда для запуска источника.
# Адрес для отправки данных источником автоматически будет добавлен в конец этой строки
Launch ffmpeg -s 640x480 -f video4linux2 -i /dev/video0
# С каких адресов может обращаться источник
ACL allow 127.0.0.1
</Feed>

# Описываем первый поток. Это будет поток в формате flv
<Stream webcam.flv>
# Источник потока
Feed webcam.ffm
# Используемый формат
Format flv
# Используемый кодек
VideoCodec flv
# Частота кадров
VideoFrameRate 30
# Размер буфера
VideoBufferSize 80000
# Битрейт
VideoBitRate 200
# Минимальное и максимальное качество
VideoQMin 1
VideoQMax 5
# Размер видео. Дожно совпадать с размером видео на источнике
VideoSize 640x480
# Время ожидания перед началом отправки данных клиенту (в секундах)
PreRoll 1
# Звук мы транслировать не будем
NoAudio
</Stream>

# Второй поток. Это SWF-файл с FLV-потоком внутри
# Всё остальное по аналогии
<Stream webcam.swf>
Feed webcam.ffm
Format swf
VideoCodec flv
VideoFrameRate 30
VideoBufferSize 80000
VideoBitRate 200
VideoQMin 1
VideoQMax 5
VideoSize 640x480
PreRoll 1
NoAudio
</Stream>

# При обращении к индексной страницы ffserver будем отображать текущий статус сервера
<Stream index.html>
Format status
</Stream>

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

Запускаем ffserver-командой:

ffserver -f /etc/ffserver.conf

Чтобы ffserver автоматически запускался при загрузке сервера нужно добавить эту команду в файл "/etc/rc.local".

После запуска ffserver можно открыть в браузере адрес "http://<адрес_вашего_сервера>:12345" и увидеть страницу статуса сервера:

На статусной странице сервера кроме информации о состоянии сервера есть так же ссылки на все транслируемые потоки, так что можно сразу их протестировать.

Для картинки с камеры на html-страничку нужно добавить на неё следуюший код:

<embed src="http://<адрес_вашего_сервера>:12345/webcam.swf" width=640 height=480 />

На этом всё. Приятной работы!

Источник

Категория: Интересные статьи | Добавил: sashacd (04.04.2010)
Просмотров: 3234 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email *:
Код *:

Copyright ООО "Отдел Информационных Технологий" © 2024