У меня есть IP-камера, и я хочу получить ее видеопоток с помощью Gstreamer и отправить его в udpsink, а затем в другой сети получить его и поделиться с помощью сервера RTSP. Это моя командная строка на первой стороне
gst-launch-1.0 -v rtspsrc location=rtsp://example:x/media.smp ! rtph264depay ! h264parse ! rtph264pay name=pay0 pt=96 ! udpsink host=127.0.0.1 port=5001
а с другой стороны я использовал обе эти команды.
./test-launch "( udpsrc port=5001 caps = "application/x-rtp\,\ media\=\(string\)video\,\ payload\=\(int\)98\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)H264\,\ packetization-mode\=\(string\)1\,\ profile-level-id\=\(string\)640028\,\ sprop-parameter-sets\=\(string\)\"Z2QAKKy0A8ARPyo\\\=\\\,aM4Bniw\\\=\"\,\ a-framesize\=\(string\)1920-1080\,\ a-cliprect\=\(string\)\"0\\\,0\\\,1080\\\,1920\"\,\ a-framerate\=\(string\)25.0\,\ clock-base\=\(uint\)3219500149\,\ seqnum-base\=\(uint\)57852\,\ npt-start\=\(guint64\)0\,\ play-speed\=\(double\)1\,\ play-scale\=\(double\)1\,\ ssrc\=\(uint\)691379019" ! x264enc ! rtph264pay name=pay0 pt=96 )"
а также
./test-launch "( udpsrc port=5001 ! x264enc ! rtph264pay name=pay0 pt=96 )"
Но у меня ошибка RTSP/1.0 503 service unavailable
.
Кто-нибудь знает, почему это происходит? Любая помощь будет очень признательна!
Спасибо @RSATom. Я попытался создать файл make с помощью cmake в Ubuntu Linux, но получил это сообщение об ошибке: None of the required 'gstreamer-rtsp-server-1.0' found
. Думаю, мне нужно его установить, но я не нашел.
вам нужен launchpad.net/%7Ersatom/+archive/ubuntu/gst-rtsp-server-1.0
и sudo apt install libgstrtspserver-1.0-dev
но имейте в виду, что он работает только на Ubuntu 17
Я хочу запустить его на встроенной плате, и его ОС - linaro-1.13.1 (я думаю, Ubuntu 14.0). Знаете ли вы (@RSATom) другое решение для ретрансляции потока UDP на RTSP, поддерживающее TCP / UDP / HTTP?
Ubuntu 17 требуется PPA для моего модифицированного gstreamer-rtsp-server-1.0
, и он требуется только на стороне сервера. На вашей плате вам понадобится только часть ванильного gstreamer-rtsp-server
- rtspclientsink
. Но, конечно, я не знаю, доступен ли он на linaro-1.13.1
и совместим ли он с последними версиями rtsp-сервера ...
Кстати, последняя версия GStreamer имеет сток WebRTC. Это мог бы быть еще один хороший вариант ...
Я установил Ubuntu 17 и смог скомпилировать проект, но столкнулся с другой проблемой: для этого нужен rtspclientsink, и я не знаю, как его получить. @RSATom
rtspclientsink
находятся в gstreamer-rtsp-server
. Так что просто установите его на стороне клиента, даже если вы не планируете запускать там сервер.
Думаю, вам нужен пакет libgstrtspserver-1.0-0
@RSATom Я могу работать медленно, но не понимаю, как работает ваше приложение. поэтому, если я хочу перезапустить, скажем, камера по этому адресу: rtsp: //10.0.0.1: 8554 / stream на rtsp: //10.0.0.2: 8554 / restream (10.0.0.2 - это локальный IP-адрес сервера), чем как Я делаю это?
@LaciK, если я вас правильно понял, то вам понадобится третья часть, которая с одной стороны будет подключаться к rtsp: //10.0.0.1: 8554 / stream через RTSP PLAY, а с другой стороны будет отправлять полученные пакеты в rtsp: / /10.0.0.2:8554/restream через RTSP RECORD. У меня уже есть реализация этого компонента сортировки, но это банкомат с закрытым исходным кодом. Может, скоро открою, надо немного подумать ...
@LaciK, я открыл исходники своего рестримера IpCams: github.com/RSATom/IpCamBox
Пожалуйста, посмотрите github.com/RSATom/RtspRestreamServer - он создан именно для этой задачи, но намного проще, надежнее и гибче, чем использование потоковой передачи udp. И возможно добавить SSL-шифрование к потокам.