RTSP сервер средствами ffserver & ffmpeg

RTSP расшифровывается как Real Time Streaming Protocol — потоковый протокол реального времени — по сути это протокол управления вещанием, он позволяет выполнять несколько команд, такие как «старт», «стоп», «переход на определённое время».

Тестировал:
•Одноплатный компьютер Orange PI PC
•Web-камера LOGITECH HD Webcam C270

Важно! Камера должна на выходе иметь изображение, которое не нужно перекодировать.
Если вы запустили потоковое видео средствами ffserver & ffmpeg , RTSP сервер запускается после редактирования /etc/ffserver.conf

nano /etc/ffserver.conf

Мой /etc/ffserver.conf

Port 8090 
RTSPPort 8091 
RTSPBindAddress 0.0.0.0 
MaxClients 100 
MaxBandwidth 20000 
<Feed feed.ffm> 
File /tmp/feed.ffm FileMaxSize 5M
Launch ffmpeg -f video4linux2 -i /dev/video0 
</Feed> 

# RTSP 

<Stream live>
Feed feed.ffm
Format rtp
VideoFrameRate 10
VideoBufferSize 2000
VideoBitRate 800
VideoQMin 1
VideoQMax 31
VideoSize 640x480
Noaudio
</Stream>

Сохраняем изменения в файле (ctrl + o) и закрываем файл (ctrl + x).

запускаем ffserver:
опция -d отладочный режим

ffserver -d

rtsp://Ваш_IP:8091/live смотрим в VLC

Интересный, но мной не проверенный плеер:
HTML5 RTSP Player
поддерживает:
Browser support:
•Firefox v.42+
•Chrome v.23+
•OSX Safari v.8+
•MS Edge v.13+
•Opera v.15+
•Android browser v.5.0+
•IE Mobile v.11+

Мне был задан вопрос «Как автоматически запускать и останавливать RTSP сервер при заходе на веб страницу?»
RTSP сервер можно запускать и останавливать bash скриптом. Google в помощь.

Поделиться
Отправить
Запинить
2017   armbian   ffmpeg   ffserver   OrangePI PC   RTSP
12 комментариев
vash_sa

Как запустить команду ffmpeg -s 640x480 -r 30 -f video4linux2 -i /dev/video0 http://localhost:8090/feed.ffm в фоновом режиме?
ffserver работает в фоновом режиме.
Если я эту команду просто запускаю, то поток с usb-камеры передается в сеть нормально. Но при этом занят терминал. И второй запуск другой программы с терминала не возможен.
Импеданс & не помогает
ffmpeg -s 640x480 -r 30 -f video4linux2 -i /dev/video0 http://localhost:8090/feed.ffm &  — создает PID процесса. но потока нет!!!!
У Вас так же???

ua3nbw

если ffserver работает в фоновом режиме, то ffmpeg запущен тоже в фоновом режиме строкой Launch ffmpeg -f video4linux2 -i /dev/video0 в конфиге ffserver-а.

так ffmpeg можно запустить в фоне:
ffmpeg -s 640x480 -r 30 -f video4linux2 -i /dev/video0 http://localhost:8090/feed.ffm 2>/dev/null >/dev/null&

ну или запустить другую программы, с другого терминала.

vash_sa

Эта комбинация ffmpeg -s 640x480 -r 30 -f video4linux2 -i /dev/video0 http://localhost:8090/feed.ffm 2>/dev/null >/dev/null&
не работает
Прекрасно работает вот такая команда
sh -c «ffmpeg -s 640x480 -r 30 -f video4linux2 -i /dev/video0 http://localhost:8090/feed.ffm > log 2>&1 &»
Осталось за малым Отловить запрос rtsp://ip:port/live отсылаемый на сервер и запустить нужную ffmpeg команду.
Но как отловить запрос? не могу понять. Дайте наводку, пожалуйста.

ua3nbw

Apache + PHP, попробуйте сначала включать светодиоды, кнопками с веб страницы.

vash_sa

Не понял логики. Причем Apache? Запрос такого рода rtsp://192.168.1.231:8091/live. В ip-камере там тоже доп сервер стоит?
Когда посылается аналогичный запрос на ip-камеру, она включается и отдает поток. Запрос разрывается и камера выключается. Как это сделано? Здесь ведь аналогичная ситуация.

ua3nbw

про включение и выключении камеры тут https://ru.wikipedia.org/wiki/RTSP ничего не сказано. Как это сделано в  ip-камерах я не знаю.
логично, что слушаются необходимые порты и в случае активности на определенном порту скриптом включается вещание.
Apache + PHP позволят по сети запускать ffmpeg, что автоматом включит USB камеру.

Азамат Сабырбаев

«Важно! Камера должна на выходе иметь изображение, которое не нужно перекодировать.»

Это значит я не могу никак вещать h264, если камера на выходе имеет mjpeg? То есть до ffserver я не могу перекодировать поток используя ffmpeg?

ua3nbw

Работать будет, но при перекодировке нагрузка на CPU весьма значительная.

Азамат Сабырбаев

Спасибо, обнадежили. Я долго пытался добавить в выше приведенный конфигурационный файл изменения, но все с ошибками. Можете привести конфигурационный файл или дать направление в каком пути двигаться, на данный момент ошибки требуют presets, а их для cedrus264 в ffmpeg нет

ua3nbw

cedrus тут и не должен работать.
вещать h264 можно используя VideoCodec libx264

Все прекрасно!

Скажите, поток отдаем rtsp в сеть, а пароль можно ставить на него? Как-то не хочется транслировать «открытым текстом»)

ua3nbw

У  FFServerа нет возможности ставить пароль, но можно разрешить доступ по IP
директивы #ACL ALLOW и #ACL DENY в конфиге.

https://www.ffmpeg.org/sample.html

Все прекрасно!

ua3nbw спасибо за ответ!
Скажите, есть дебиан и камера usb с270. Можно средствами ffmpeg сделать rtsp трансляцию чтобы это выглядело как будто ip камера? У меня есть апельсинка и камера. Не хочится покупать ip камеру для видеонаблюдения. Сервер к сожалению понимает только ip камеры(

ua3nbw

Это и выглядит как будто ip камера.
Адресс ip камеры rtsp://Ваш_IP:8091/live

Все прекрасно!

Спасибо!!!
Настроил и подключился но задержка большая( От чего зависит такая большая задержка? Дело в кодеке? Можно как то без кодека или сжатия обойтись? Камера с270 ведь не кодированный сигнал отдает, на прямую или самым легким кодеком.
Извините за такие вопросы, но я первый раз этим занимаюсь(((

ua3nbw

без сжатия не обойтись.
задержка будет всегда, для уменьшения задержки поиграйтесь с параметрами.
VideoFrameRate 10
VideoBufferSize 2000
VideoBitRate 800
VideoQMin 1
VideoQMax 31
задержка чуть более 1сек. у меня получалась при трансляции с  сервера потокового вещания

Alexander

Не подскажите что нужно дописать в конфиг чтобы еще звук с микрофона прикрутить?

ua3nbw

# Noaudio

https://www.ffmpeg.org/sample.html

Bitrate for the audio stream. Codecs usually support only a few
different bitrates.

AudioBitRate 32

Number of audio channels: 1 = mono, 2 = stereo

AudioChannels 1

Sampling frequency for audio. When using low bitrates, you should
lower this frequency to 22050 or 11025. The supported frequencies
depend on the selected audio codec.

AudioSampleRate 44100

Ваш комментарий
адрес не будет опубликован

ХТМЛ не работает

Ctrl + Enter
Популярное