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.
Tabla de contenido
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.

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.


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=truepara 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
Gracias por tu respuesta. ✨