2012-05-09 68 views
12

Necesito crear una aplicación de Android para mostrar un canal de TV en vivo. se supone que la aplicación reproduce secuencias de video en vivo desde una multidifusión de una puerta de enlace DVB, de acuerdo con el proveedor de la puerta de enlace puede transmitir UDP o RTP. Configuré vlc en mi computadora para transmitir UDP y RTP y rompí los dedos tratando de que el reproductor de Android los mostrara. después de un tiempo descubrí que Android solo es compatible con las transmisiones en vivo HTTP/S y RTSP. Probé todas las soluciones FFMPEG y diferentes reproductores multimedia sin éxito todavía. No soy un experto en video, pero a mi entender RTSP es una encapsulación de RTP. ¿Se puede envolver y transmitir mi transmisión RTP (incluso a través de un proxy)? ¿Alguien sabe de una solución UDP en funcionamiento?Solución de transmisión UDP o RTP para Android

gracias

empecé a escribir un túnel que pasa una corriente UDP local desde el puerto 1234, para una conexión TCP en el puerto 8888. Estoy probando con VLC, la carga útil de UDP parece correcto, y yo soy capaz de ver el VLC inicia la conexión http cuando espero que el oyente TCP acepte la conexión. pero aún VLC solía jugar el flujo HTTP resultando, mi código:

public void Bridge() 
    { 
     //endpoints 
     IPEndPoint myRemoteEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234); 

     //communications objects 
     UdpClient myUdpClient = new UdpClient(myRemoteEndpoint); 
     TcpListener myTcpListener = new TcpListener(IPAddress.Any, 8888); 

     //buffer 
     byte[] buffer = new byte[2048]; 

     //start tcp listener 
     myTcpListener.Start(); 
     Socket tcpAcceptedSocket = myTcpListener.AcceptSocket();    

     while (true) 
     { 
      try 
      { 
       //get data from UDP client 
       buffer = myUdpClient.Receive(ref myRemoteEndpoint); 

       //send bytes received from UDP over TCP 
       tcpAcceptedSocket.Send(buffer); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 
     } 

     //close sockets 
     myUdpClient.Close(); 
     myTcpListener.Stop(); 

    } 

alguna idea?

+0

Agradecería cualquier código/muestras de implementación. gracias de nuevo – Omriko

+0

"¿No hay nadie más?" – Omriko

Respuesta

2

Espero que ya hayas resuelto esto?

Mi primer pensamiento fue "¿cómo salir de ese bucle while (true)?" lol

RTP se añadió a la SDK de Android en el nivel de la API 12:

http://developer.android.com/reference/android/net/rtp/package-summary.html

Tal vez se puede utilizar android.net.rtp para recuperar el streaming de vídeo. Parece que hay una falta significativa de tutoriales en esta área, por lo que si lograste/hiciste que esto funcione, estoy seguro de que una redacción rápida podría hacer volar los grandes resultados de búsqueda de G; sin mencionar ayudar a los carteles de más de 600 preguntas sobre stackoverflow que aparecen en una búsqueda de "Android udp rtp".

Desde el blog-o-esfera:

http://burcudogan.com/2011/06/05/android-rtp-implementation-is-based-on-udp/

Y voy a echar en un enchufe para WebRTC, ya que parece prometedor:

http://www.html5rocks.com/en/tutorials/webrtc/basics/

+1

Shane gracias por los enlaces, porque no tenía solución en el momento en que compré el MPEG2TS a través de la emisora ​​UDP (significativamente más barato ...) y escribí un código proxy que toma los medios de la transmisión, los almacena en un archivo y permite " descargando "o la transmisión progresiva del archivo desde el cliente. No es una solución de libros de texto para el problema, pero lo pusimos en marcha. Espero que Google nos muestre algo de amor en el futuro y agregue soporte a Protocolos adicionales. ¡gracias de nuevo! – Omriko

+0

¡Me alegra que lo hayas hecho funcionar, y gracias por relatar tu experiencia! – CodeShane

+0

¿Podría vincular a qué dispositivo compró? Estoy interesado en algo similar. – egfconnor

Cuestiones relacionadas