НАСТРОЙКА СЕРВЕРА ВИДЕОНАБЛЮДЕНИЯ

Материал взят отсюда

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

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

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

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

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

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

sudo 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" и увидеть страницу статуса сервера:

Видеоконференция в Linux

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

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

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

 

От себя добавлю рабочий конфиг на 2 камеры:

# Порт, на котором будет работать ffserver
Port 8081
# Адрес, на котором будет работать ffserver.
# Если указать 0.0.0.0 то будут использованы все доступные адреса
BindAddress 0.0.0.0
# Максимальное количество обслуживаемых соединений
MaxHTTPConnections 2000
# Максимальное количество клиентов
MaxClients 1000
# Максимальная используемая полоса (в килобитах)
MaxBandwidth 2000
# Файл журнала. Формат подобен формату лога apache
CustomLog /var/log/ffserver-access.log
# Описываем источник
<Feed webcam1.ffm>
    # Временный файл для хранения промежуточных данных
    File /tmp/webcam1.ffm
    # Максимальный размер файла с промежуточными данными
    FileMaxSize 3M
    # Команда для запуска источника.
    # Адрес для отправки данных источником автоматически будет добавлен в конец этой строки
    Launch ffmpeg -s 1280x720 -f video4linux2 -i /dev/video1
    # С каких адресов может обращаться источник
    ACL allow 127.0.0.1
</Feed>

<Feed webcam2.ffm>
        File /tmp/webcam2.ffm
        Launch ffmpeg -s 1280x720 -r 25 -i /dev/video0
        FileMaxSize 20M
        ACL allow 127.0.0.1
</Feed>

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

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


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

 

Комментарии   

0 #12 Novella 21.02.2019 07:58
I was excited to find this site. I need to to thank you for your time
for this fantastic read!! I definitely really liked every part of it and
i also have you bookmarked to check out new things in your web site.

viagra generic
Цитировать
0 #11 Eusebia 21.02.2019 04:20
It's truly very difficult in this active life to
listen news on TV, so I just use world wide web for that
purpose, and take the most recent news. viagra pill
Цитировать
0 #10 Carroll 11.02.2019 02:32
What a stuff of un-ambiguity and preserveness of precious experience regarding unexpected feelings.
viagra pill
Цитировать
0 #9 Marylin 31.01.2019 21:55
You need to take part in a contest for one of the
highest quality websites on the web. I most certainly will highly recommend this website!

viagra pill
Цитировать
0 #8 Lewis 31.01.2019 21:18
I enjoy what you guys are usually up too.
This type of clever work and reporting! Keep up the good works guys I've you
guys to my own blogroll. viagra 100mg
Цитировать
0 #7 Joel 31.01.2019 13:13
I like the helpful information you provide in your articles.
I'll bookmark your weblog and check again here frequently.
I'm quite sure I will learn many new stuff right here!
Good luck for the next! buy
viagra
Цитировать
0 #6 Beau 31.01.2019 08:09
hello!,I like your writing so a lot! proportion we keep up a
correspondence extra approximately your article on AOL? I need an expert in this area to resolve my problem.
May be that's you! Having a look forward to look you. generic
viagra
Цитировать
0 #5 Angelina 28.01.2019 06:00
I'm really impressed together with your writing abilities as neatly as
with the structure on your weblog. Is that this a paid theme or did you customize it yourself?
Anyway keep up the nice high quality writing, it is rare to look a great blog like this one nowadays..
viagra
Цитировать
0 #4 Chasity 24.01.2019 21:08
Wow, that's what I was searching for, what a stuff!
existing here at this web site, thanks admin of this web page.
viagra tablets
Цитировать
0 #3 Kristeen 24.01.2019 09:32
Undeniably imagine that which you said. Your favourite justification seemed to be at the net the easiest factor to take note of.
I say to you, I certainly get annoyed at the same time as other people consider issues that they just don't realize about.
You managed to hit the nail upon the top as neatly as defined out the whole thing with no
need side effect , other people could take a signal.
Will likely be again to get more. Thanks viagra 100mg
Цитировать

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


Защитный код
Обновить