Transmisión RTSP GStreamer UDP & Corrección de latencia para cámaras térmicas

Transmisión RTSP con GStreamer: una pregunta para un cliente real&un caso (UDP frente a TCP)

Este artículo documenta una conversación real de atención al cliente sobre la transmisión RTSP desde nuestro cámaras térmicas usando Gstreamer.
Lo compartimos en un Q&Un formato de diálogo para que otros clientes que enfrentan problemas similares puedan seguir rápidamente el proceso de solución de problemas.


1. Dirección de transmisión RTSP

Cliente:
Hola, recibimos sus cámaras térmicas, todo funciona bien, gracias, pero parece que no podemos encontrar la dirección de la transmisión RTSP. cual es el /stream/sub?

Apoyo:
La URL de transmisión RTSP de nuestra cámara es:

rtsp://192.168.2.254:554/live

2. Preocupación por la latencia RTSP

Cliente:
Probamos la transmisión RTSP y notamos una latencia considerable en comparación con la vista previa del panel de administración..

Apoyo:
Este es el comportamiento esperado.. La vista previa de administración web utiliza un canal interno optimizado, mientras que RTSP depende de las condiciones de la red y del almacenamiento en búfer del cliente..


3. Requisito de transmisión UDP

Cliente:
La transmisión RTSP tampoco funciona en mi reproductor que espera UDP. ¿Cómo puedo obtener una transmisión UDP??

Apoyo:
¿Puedo saber qué reproductor estás usando?? VLC?

Cliente:
Mi reproductor es GStreamer integrado en una aplicación de Android.


4. Unidifusión UDP frente a multidifusión UDP

Apoyo:
Si el cliente GStreamer accede al dispositivo usando Multidifusión de UDP, esto es actualmente No soportado.
Necesitamos aclarar si está utilizando unidifusión UDP o Multidifusión de UDP.

Cliente:
Mis usos de canalización GStreamer rtspsrc con udp ambientado en el protocols parámetro.
No usé el udp-mcast valor, entonces debería ser unidifusión UDP.


5. Aclaración de plataforma

Apoyo:
¿Este GStreamer se ejecuta en Windows?, Linux, o Android?
A nuestro ingeniero de software le gustaría probar de nuestro lado..

Cliente:
Mi aplicación usa GStreamer en Android, pero rtspsrc También se puede probar en Linux..


6. Problema conocido de Linux GStreamer (Caso de referencia)

Apoyo:
Encontramos un problema similar discutido en un foro técnico chino..

Solución:
Desinstale el siguiente complemento:

sudo apt-get remove gstreamer1.0-plugins-ugly

Este complemento puede enviar encabezados RTSP que algunas cámaras no pueden reconocer, resultando en un error de denegación de servicio.

RTSP GStreamer UDP Streaming & Latency Fix for Thermal Cameras 1

Referencia:
https://forums.developer.nvidia.com/t/rtsp-gstreamer-simple-recieve-and-store-in-file/157535/14

¿Podrías proporcionar tu rtspsrc tubería (Preferiblemente Linux)? También se acepta una versión de la aplicación para realizar pruebas..


7. RTSP DESCRIBIR Compatibilidad del encabezado

Apoyo:
Otra posible razón es que si el RTSP DESCRIBIR la solicitud no contiene:

application/sdp

el dispositivo puede rechazar el servicio.

Esta lógica de validación puede ser demasiado estricta., Y planeamos relajar esta condición en futuras actualizaciones de firmware..


8. Confirmación de la versión de Android GStreamer

Cliente:
En Android, estoy usando:

  • gstreamer-1.0-android-universal-1.26.8

No incluye complementos feos.. Mi Makefile contiene:

GSTREAMER_PLUGINS := \
    coreelements \
    playback \
    typefindfunctions \
    rtsp \
    rtp \
    rtpmanager \
    udp \
    tcp \
    videoparsersbad \
    androidmedia \
    opengl

9. Parámetros de tiempo de ejecución de GStreamer sugeridos

Apoyo:
Recomendamos probar short-header=true en rtspsrc.

Cliente:
¿Ese encabezado es para UDP??

Apoyo:
Es una opción de encabezado RTSP y, a menudo, mejora la compatibilidad..

Ejemplos:

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. Resultados de las pruebas internas (Linux)

Apoyo:
Nuestro ingeniero probó la transmisión RTSP usando Gstreamer 1.0 en linux, y funciono correctamente.

GStream-1 test on linux
Prueba GStream-1 en Linux
GStream-1 test on linux working well
La prueba GStream-1 en Linux funciona bien

Ejemplo de TCP:

gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
  name=src \
  latency=0 \
  protocols=tcp \
src. \
  ! decodebin \
  ! autovideosink

Ejemplo de UDP (eliminar protocols=tcp):

gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
  name=src \
  latency=0 \
src. \
  ! decodebin \
  ! autovideosink

La lógica interna entre Linux y Android GStreamer es la misma, por lo que el comportamiento debe ser consistente en todas las plataformas.


11. Conclusión

Este caso resalta varios puntos importantes al usar RTSP con GStreamer:

  • URL RTSP: rtsp://<camera_ip>:554/live
  • UDP unidifusión es compatible; La multidifusión UDP no es
  • Evite complementos problemáticos (solo linux)
  • Intentar short-header=true para una mejor compatibilidad
  • Los resultados de las pruebas de Linux generalmente se pueden aplicar a Android

Si encuentra problemas similares, por favor proporcione su Canalización GStreamer o cliente de prueba, y nuestro equipo de ingeniería le ayudará más.

Haz una pregunta

← Volver

Gracias por tu respuesta. ✨