Saltar al contenido principal
dweOS no admite oficialmente la transmisión con GStreamer. Los siguientes pasos son solo para Linux y Windows.NOTA: la calidad de la transmisión puede verse afectada.
GStreamer puede ser muy complejo/elaborado, incluso para configurar un solo flujo de video. La mayoría de las funciones de comodidad, como los flujos múltiples y las grabaciones en vivo, son mucho más sencillas y cuentan con una interfaz de usuario en Discovery.
1

Verificar dweOS

Después de seguir la configuración de dweOS, continúa con los siguientes pasos.
Anota el/los puerto(s) a los que se está transmitiendo.
2

Instalar GStreamer

En la terminal, ejecuta:
sudo apt update
Luego ejecuta lo siguiente para instalar GStreamer:
sudo apt install gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools                
Para verificar la instalación de GStreamer, abre CMD y ejecuta:
gst-launch-1.0 --version
Esto debería mostrar algo como:
gst-launch-1.0 version 1.16.2
GStreamer 1.16.2
https://launchpad.net/distros/ubuntu/+source/gstreamer1.0
3

Identificar las variables para la línea de comandos de GStreamer

Para vincular los flujos de video de los dispositivos conectados, primero configurarás dweOS.
1
Primero, identifica la dirección IP de tu portátil/escritorio, que introduciremos en el software dweOS.Esto se puede hacer ejecutando lo siguiente:
ip addr
Verás muchas direcciones; búscalas, en particular las direcciones que siguen al texto: inet.
Lo más probable es que tenga el formato 192.168.x.xx
2
Deberás reemplazar la IP recopilada en dweOS bajo Dirección IP y anotar el puerto al que estás transmitiendo. (5600 por defecto)
¡Recuerda crear el punto de conexión de streaming con el botón (+) una vez que se hayan rellenado los campos!
En este ejemplo, la IP recopilada es 192.168.5.55 y el puerto es 5600Endpoints de dweOS
El campo Puerto establecido en 5601 es automático con el programa; el único endpoint al que se está transmitiendo tiene el ícono de cámara al lado y un botón de papelera para eliminarlo.
3
El formato de GStreamer es el siguiente:
gst-launch-1.0 [FLAGS] [SOURCE] ! [FILTER] ! [SINK]
Teniendo en cuenta el puerto, hay algunos parámetros del comando GStreamer que debes conocer.Flags vitales:
  • -v (Verbose): imprime información del flujo para que puedas ver la resolución/el formato negociado entre elementos.
  • -e (EOS - End of Stream): crucial para la grabación. Si pulsas Ctrl+C sin este flag, tu archivo podría corromperse (encabezados faltantes). Este flag fuerza un cierre limpio.
  • --help-all: lista todos los elementos disponibles en tu sistema.
Sources (entrada):
  • videotestsrc: genera un patrón de prueba (barras de color, estática, etc.).
  • Parámetro: pattern=smpte (o snow, ball, etc.)
  • autovideosrc / v4l2src: tu webcam (Linux).
  • Parámetro: device=/dev/video0
  • filesrc: lee un archivo local.
  • Parámetro: location=./video.mp4
  • udpsrc: recibe datos por la red mediante UDP.
    • Parámetro: port=5600 (el puerto en el que se escucha).
    • Parámetro: caps="..." (¡Esencial! Indica a GStreamer qué son realmente los bytes en bruto).
    • Parámetro: buffer-size=524288 (aumenta el búfer para evitar la pérdida de paquetes en flujos de alta resolución).
      • Los tamaños de búfer estándar para H264 son 96 y para MJPEG 26
Sinks (salida)
  • autovideosink: abre una ventana y reproduce el video.
  • fakesink: descarta datos (útil para probar si una tubería se ejecuta sin errores).
  • filesink: escribe en un archivo.
  • Parámetro: location=output.mp4
  • udpsink: transmite por la red.
Esenciales (filtros/convertidores)
  • videoconvert: convierte espacios de color (por ejemplo, de YUV a RGB). Si obtienes un error “could not link”, ponlo en el medio.
  • videoscale: redimensiona el video.
  • capsfilter: fuerza un formato específico. Sintaxis: video/x-raw,width=1920,height=1080.
  • rtp[format]depay: despaquetador. Desempaqueta los paquetes de red RTP para revelar el flujo interior.
    • Ejemplos: rtpjpegdepay (para MJPEG), rtph264depay (para H.264).
  • [format]dec: decodificador. Descomprime el video en píxeles brutos para su visualización.
    • Ejemplos: jpegdec, avdec_h264.
4
Aquí tienes algunas líneas de ejemplo para probar tu GStreamer:Patrón de prueba
gst-launch-1.0 -v videotestsrc ! videoconvert ! autovideosink
Visualización de webcam (si está disponible)
gst-launch-1.0 -v v4l2src ! videoconvert ! autovideosink
Forzar webcam a 720p 30 fps
gst-launch-1.0 -v v4l2src ! image/jpeg,width=1280,height=720,framerate=30/1 ! jpegdec ! videoconvert ! autovideosink
Para resoluciones más altas, la salida de video suele ser MJPEG comprimido.image/jpeg acepta el formato comprimido de la cámara.jpegdec añade un decodificador para convertir ese flujo JPEG en video sin procesar para que la ventana pueda mostrarlo.
Grabar la webcam
gst-launch-1.0 -e v4l2src ! videoconvert ! x264enc ! mp4mux ! filesink location=test.mp4
Esto grabará en segundo plano; para terminar el clip, pulsa Ctrl + C y estará en el directorio actual.En este caso, el archivo se llama test.mp4, cuya existencia podemos comprobar con ls -lh test.mp4.
4

Configurar la transmisión desde dweOS

Con una comprensión de los comandos GStreamer, podemos comenzar a configurar el flujo de video específicamente con dweOS.
¡Recuerda establecer tu propia IP como la IP en el endpoint de streaming!
Según el códec de video (MJPEG / H264) especificado en dweOS, ejecuta cualquiera de los siguientes:MJPEG
gst-launch-1.0 udpsrc port=5600 caps="application/x-rtp, encoding-name=JPEG, payload=26" ! rtpjpegdepay ! jpegdec ! autovideosink
H264
gst-launch-1.0 udpsrc port=5600 caps="application/x-rtp, encoding-name=H264, payload=96" ! rtph264depay ! avdec_h264 ! autovideosink
¡Recuerda reemplazar el número de puerto en la línea de comandos por el puerto al que se está transmitiendo!
¡Ahora deberías tener una transmisión en vivo de tu cámara en una ventana!
5

Configurar la grabación

¡Para grabar una transmisión, una vez más el códec de video importa!Sabrás que se está grabando una transmisión si tu terminal contiene texto similar a este:Grabación con GStreamerMJPEGPara MKV
gst-launch-1.0 -e udpsrc port=5600 caps="application/x-rtp, encoding-name=JPEG, payload=26" ! rtpjpegdepay ! jpegparse ! matroskamux ! filesink location=output_mjpeg.mkv
La línea anterior es para un formato MKV, ya que AVI es increíblemente delicado con GStreamer y requiere que los datos de salida estén formateados de manera muy específica. Aunque es posible, MJPEG a AVI es mucho más sencillo en Discovery, ya que es la salida predeterminada.
H264Para MKV
gst-launch-1.0 -e udpsrc port=5600 caps="application/x-rtp, encoding-name=H264, payload=96" ! rtph264depay ! h264parse ! matroskamux ! filesink location=output_h264.mkv
Para MP4
gst-launch-1.0 -e udpsrc port=5600 caps="application/x-rtp, encoding-name=H264, payload=96" ! rtph264depay ! h264parse ! video/x-h264,stream-format=avc ! mp4mux ! filesink location=video.mp4
6

¡Éxito!

¡Maravilloso! ¡Ahora deberías tener los componentes básicos para configurar una transmisión y una grabación con GStreamer!
Advertencia:Con GStreamer, la configuración de una sola cámara ya requiere bastante trabajo, y grabar varios flujos a la vez también requeriría bastante trabajo y desarrollo.Recomendamos Discovery si tus configuraciones de cámaras se vuelven complejas.

Descargar Discovery

La solución multimedia todo en uno para flujos de video de red submarinos.