android - RTSP sobre transmisión de video HTTPS por GStreamer
gstreamer-1.0 (1)
Esta es una pregunta antigua y no está muy clara para mí, por lo que haré algunas suposiciones.
Creo que estás (estábamos) escribiendo un cliente (desde que etiquetaste Android) en código nativo (nativeSetPipeline) con C / C ++.
Trabajar con código nativo puede ser un PITA, pero si mis suposiciones son correctas, puede usar las bibliotecas de Poco Project para redirigir la salida de la conexión HTTPS a su reproductor RTSP. Debe establecer la conexión HTTPS y dirigir el flujo de salida a su biblioteca GStreamer.
https://pocoproject.org/docs/Poco.Net.HTTPSClientSession.html
Supongo que puedes hacer que un std :: ostream sea compatible con una transmisión GStreamer ...
// ...
HTTPResponse response;
std::istream& inputStream = session.receiveResponse(response);
StreamCopier::copyStream(inputStream, gstream);
// ...
Es posible que desee utilizar GStreamer con C ++ también. Aquí hay una opción (no he usado / probado esto):
Tengo una corriente que es RTSP sobre HTTPS.
El protocolo de enlace es seguro (a través de https), pero los datos una vez finalizado el acuerdo no están cifrados (en RTSP).
GStreamer de forma predeterminada no se transmite, ya que espera que los datos también se cifren (en RTSPS), lo que no está en mi caso.
He intentado varias cosas pero nada parece funcionar. por ejemplo, después de que empecé a recibir el flujo, intenté escribirlo en un puerto local y le pasé esa URL a GStreamer pero no se reproduce.
Soy nuevo en este GStreamer, por lo que mi conocimiento sobre el jugador es limitado. Estoy buscando una manera de completar el protocolo de enlace a través de GStreamer que es HTTPS (seguro) y luego la secuencia que obtengo no está encriptada. Si alguien ha trabajado en algo similar, por favor, avíseme de alguna manera para transmitir RTSP. He intentado algo como
nativeSetPipeline("rtspsrc location=rtsph://<URL of the video stream> latency=100 ! rtph264depay ! avdec_h264 ! glimagesink");
La tubería anterior funciona de manera predeterminada GStreamer reproduce RTSP a través de HTTP, pero cuando intento RTSP a través de HTTPS algo como
nativeSetPipeline("rtspsrc debug = TRUE do-rtcp=false location=/"rtspsh://<secured URL of the stream>" latency=100 do-rtsp-keep-alive=true ! rtph264depay ! avdec_h264 ! glimagesink");
Esto no funciona, ya que GStreamer espera que la transmisión también esté protegida. ¿Alguna idea / fragmento de código o ejemplo sobre cómo transmitir RTSP a través de HTTPS? La versión actual que estoy usando es 1.10.4.