Przesyłanie strumieniowe RTSP za pomocą GStreamera – prawdziwy klient Q&Sprawa (UDP kontra TCP)
Ten artykuł dokumentuje prawdziwą rozmowę z obsługą klienta dotyczącą przesyłania strumieniowego RTSP z naszego kamery termowizyjne używając Gstreamer.
Udostępniamy go w Q&Format dialogowy aby inni klienci borykający się z podobnymi problemami mogli szybko śledzić proces rozwiązywania problemów.
Spis treści
1. Adres strumienia RTSP
Klient:
cześć, otrzymaliśmy Wasze kamery termowizyjne, wszystko działa dobrze, Dziękuję, ale nie możemy znaleźć adresu strumienia RTSP. Co to jest /stream/sub?
Wsparcie:
Adres URL strumienia RTSP naszej kamery to:
rtsp://192.168.2.254:554/live
2. Problem z opóźnieniami RTSP
Klient:
Przetestowaliśmy strumień RTSP i zauważyliśmy znaczne opóźnienia w porównaniu z podglądem panelu zarządzania.
Wsparcie:
Jest to oczekiwane zachowanie. Wersja zapoznawcza zarządzania siecią wykorzystuje wewnętrznie zoptymalizowany potok, podczas gdy RTSP zależy od warunków sieciowych i buforowania klienta.
3. Wymagania dotyczące przesyłania strumieniowego UDP
Klient:
Strumień RTSP również nie działa na moim odtwarzaczu, który oczekuje UDP. Jak mogę uzyskać strumień UDP?
Wsparcie:
Mogę wiedzieć, jakiego odtwarzacza używasz? VLC?
Klient:
Mój odtwarzacz to GStreamer zintegrowany z aplikacją na Androida.
4. UDP Unicast kontra UDP Multicast
Wsparcie:
Jeśli klient GStreamer uzyskuje dostęp do urządzenia za pomocą UDP Multicast, to jest obecnie nieobsługiwane.
Musimy wyjaśnić, czy używasz Transmisja pojedyncza UDP lub UDP Multicast.
Klient:
Mój potok GStreamera używa rtspsrc z udp ustawić w protocols parametr.
Nie korzystałem z udp-mcast wartość, więc powinno to być UDP unicast.
5. Wyjaśnienie platformy
Wsparcie:
Czy ten GStreamer działa w systemie Windows?, Linux, lub Androida?
Nasz inżynier oprogramowania chciałby przeprowadzić testy po naszej stronie.
Klient:
Moja aplikacja korzysta z GStreamera na Androidzie, ale rtspsrc można również przetestować na Linuksie.
6. Znany problem z Linuxem GStreamer (Sprawa referencyjna)
Wsparcie:
Znaleźliśmy podobny problem omawiany na chińskim forum technicznym.
Rozwiązanie:
Odinstaluj następującą wtyczkę:
sudo apt-get remove gstreamer1.0-plugins-ugly
Ta wtyczka może wysyłać nagłówki RTSP, których niektóre kamery nie mogą rozpoznać, co powoduje błąd odmowy usługi.

Odniesienie:
https://forums.developer.nvidia.com/t/rtsp-gstreamer-simple-recieve-and-store-in-file/157535/14
Czy mógłbyś podać swoje rtspsrc rurociąg (Preferowany Linux)? Do testów dopuszczalna jest także wersja aplikacji.
7. RTSP OPISZ kompatybilność nagłówka
Wsparcie:
Inną możliwą przyczyną jest to, że jeśli plik RTSP OPISAĆ żądanie nie zawiera:
application/sdp
urządzenie może odmówić wykonania usługi.
Ta logika walidacji może być zbyt rygorystyczna, i planujemy złagodzić ten warunek w przyszłych aktualizacjach oprogramowania sprzętowego.
8. Potwierdzenie wersji Androida GStreamer
Klient:
Na Androidzie, używam:
- gstreamer-1.0-Android-Universal-1.26.8
Nie zawiera brzydkich wtyczek. Mój plik Makefile zawiera:
GSTREAMER_PLUGINS := \
coreelements \
playback \
typefindfunctions \
rtsp \
rtp \
rtpmanager \
udp \
tcp \
videoparsersbad \
androidmedia \
opengl
9. Sugerowane parametry wykonawcze GStreamera
Wsparcie:
Zalecamy spróbować short-header=true w rtspsrc.
Klient:
Czy to nagłówek dla UDP?
Wsparcie:
Jest to opcja nagłówka RTSP, która często poprawia kompatybilność.
Przykłady:
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. Wyniki testów wewnętrznych (Linux)
Wsparcie:
Nasz inżynier przetestował strumień RTSP za pomocą Gstreamer 1.0 na Linuksie, i zadziałało poprawnie.


Przykład TCP:
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
protocols=tcp \
src. \
! decodebin \
! autovideosink
Przykład UDP (usunąć protocols=tcp):
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
src. \
! decodebin \
! autovideosink
Wewnętrzna logika pomiędzy Linuksem i Androidem GStreamer jest taka sama, dlatego zachowanie powinno być spójne na wszystkich platformach.
11. Wniosek
Ten przypadek podkreśla kilka ważnych punktów podczas używania RTSP z GStreamerem:
- Adres URL RTSP:
rtsp://<camera_ip>:554/live - UDP jednostkowe jest obsługiwany; Multicast UDP nie
- Unikaj problematycznych wtyczek (Tylko Linux)
- Próbować
short-header=truedla lepszej kompatybilności - Wyniki testów systemu Linux można ogólnie zastosować w systemie Android
Jeśli napotkasz podobne problemy, proszę podać swoje Potok GStreamer lub klient testowy, a nasz zespół inżynierów będzie Ci dalej pomagać.

Zadać pytanie
Twoja wiadomość została wysłana