RTSP GStreamer UDP Streaming & Выпраўленне затрымкі для цеплавых камер

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, якія некаторыя камеры не могуць распазнаць, што прыводзіць да памылкі адмовы ў абслугоўванні.

RTSP GStreamer UDP Streaming & Latency Fix for Thermal Cameras 1

Рэкамендацыя:
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, і гэта спрацавала правільна.

GStream-1 test on linux
Тэст GStream-1 на Linux
GStream-1 test on linux working well
Тэст GStream-1 на 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, і наша каманда інжынераў будзе дапамагаць далей.

задаваць пытанне

← Назад

Ваша паведамленне адпраўлена