RTSP Streaming з GStreamer - сапраўдны кліент Q&Справа (UDP супраць TCP)
Гэты артыкул дакументуе рэальную размову са службай падтрымкі кліентаў адносна трансляцыі RTSP з нашага цеплавыя камеры пры дапамозе Gstreamer.
Мы дзелімся ім у a Q&Фармат дыялогу таму іншыя кліенты, якія сутыкаюцца з падобнымі праблемамі, могуць хутка сачыць за працэсам ліквідацыі непаладак.
Змест
1. Адрас патоку RTSP
Кліент:
добры дзень, мы атрымалі вашы цеплавыя камеры, усё працуе нармальна, Дзякуй, але мы не можам знайсці адрас для плыні RTSP. Што такое /stream/sub?
падтрымка:
Наша камера RTSP паток URL:
rtsp://192.168.2.254:554/live
2. Праблема затрымкі RTSP
Кліент:
Мы пратэставалі паток RTSP і заўважылі значную затрымку ў параўнанні з папярэднім праглядам панэлі кіравання.
падтрымка:
Гэта чаканыя паводзіны. Папярэдні прагляд вэб-кіравання выкарыстоўвае ўнутраны аптымізаваны канвеер, у той час як RTSP залежыць ад умоў сеткі і буферызацыі кліента.
3. Патрабаванні да струменевай перадачы UDP
Кліент:
Паток RTSP таксама не працуе на маім плэеры, які чакае UDP. Як я магу атрымаць паток UDP?
падтрымка:
Ці магу я ведаць, які прайгравальнік вы выкарыстоўваеце? VLC?
Кліент:
Мой плэер - гэта GStreamer, убудаваны ў праграму Android.
4. UDP Unicast супраць UDP Multicast
падтрымка:
Калі кліент GStreamer атрымлівае доступ да прылады з дапамогай Групавая перадача UDP, гэта ў цяперашні час не падтрымліваецца.
Мы павінны ўдакладніць, ці выкарыстоўваеце вы UDP аднаадрасная або Групавая перадача UDP.
Кліент:
Мой канвеер GStreamer выкарыстоўвае rtspsrc з udp набор у ст protocols параметр.
Я не выкарыстоўваў udp-mcast значэнне, так што гэта павінна быць UDP unicast.
5. Удакладненне платформы
падтрымка:
Ці працуе гэты GStreamer у Windows?, Linux, або Android?
Наш інжынер-праграміст хацеў бы праверыць на нашым баку.
Кліент:
Мая праграма выкарыстоўвае GStreamer на Android, але rtspsrc таксама можна праверыць на Linux.
6. Вядомая праблема Linux GStreamer (Даведачная справа)
падтрымка:
Мы выявілі, што падобнае пытанне абмяркоўвалася на кітайскім тэхнічным форуме.
Рашэнне:
Выдаліце наступны плагін:
sudo apt-get remove gstreamer1.0-plugins-ugly
Гэты плагін можа адпраўляць загалоўкі RTSP, якія некаторыя камеры не могуць распазнаць, што прыводзіць да памылкі адмовы ў абслугоўванні.

Рэкамендацыя:
https://forums.developer.nvidia.com/t/rtsp-gstreamer-simple-recieve-and-store-in-file/157535/14
Не маглі б вы даць свой rtspsrc трубаправод (Пераважны Linux)? Версія праграмы таксама прымальная для тэставання.
7. RTSP DESCRIBE Сумяшчальнасць загалоўкаў
падтрымка:
Іншая магчымая прычына ў тым, што калі RTSP АПІСЦЬ запыт не змяшчае:
application/sdp
прылада можа адмовіць у абслугоўванні.
Гэтая логіка праверкі можа быць занадта строгай, і мы плануем змякчыць гэта ўмова ў будучых абнаўленнях прашыўкі.
8. Пацвярджэнне версіі Android GStreamer
Кліент:
На Android, Я выкарыстоўваю:
- gstreamer-1.0-android-universal-1.26.8
Ён не ўключае выродлівыя плагіны. Мой Makefile змяшчае:
GSTREAMER_PLUGINS := \
coreelements \
playback \
typefindfunctions \
rtsp \
rtp \
rtpmanager \
udp \
tcp \
videoparsersbad \
androidmedia \
opengl
9. Прапанаваныя параметры часу выканання GStreamer
падтрымка:
Рэкамендуем паспрабаваць short-header=true ў rtspsrc.
Кліент:
Гэта загаловак для UDP?
падтрымка:
Гэта варыянт загалоўка RTSP і часта паляпшае сумяшчальнасць.
Прыклады:
gst-launch-1.0 rtspsrc location=rtsp://<ip>:<port>/<path> short-header=true
gst-launch-1.0 rtspsrc location=rtsp://<ip>:<port>/<path> do-rtcp=false short-header=true
10. Вынікі ўнутраных выпрабаванняў (Linux)
падтрымка:
Наш інжынер пратэставаў паток RTSP з дапамогай Gstreamer 1.0 на Linux, і гэта спрацавала правільна.


Прыклад TCP:
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
protocols=tcp \
src. \
! decodebin \
! autovideosink
Прыклад UDP (выдаліць protocols=tcp):
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
src. \
! decodebin \
! autovideosink
Унутраная логіка паміж Linux і Android GStreamer аднолькавая, таму паводзіны павінны быць аднолькавымі на розных платформах.
11. Заключэнне
Гэты выпадак падкрэслівае некалькі важных момантаў пры выкарыстанні RTSP з GStreamer:
- URL RTSP:
rtsp://<camera_ip>:554/live - UDP унікаст падтрымліваецца; Групавая рассылка UDP - не
- Пазбягайце праблемных убудоў (Толькі Linux)
- Паспрабуйце
short-header=trueдля лепшай сумяшчальнасці - Вынікі тэсціравання Linux звычайна можна прымяніць да Android
Калі вы сутыкнуліся з падобнымі праблемамі, калі ласка, падайце свой Канвеер або тэставы кліент GStreamer, і наша каманда інжынераў будзе дапамагаць далей.

задаваць пытанне
Ваша паведамленне адпраўлена