2011-02-10 21 views
7

Estoy desarrollando una aplicación en la que tengo que implementar la transmisión de televisión en vivo. Mi búsqueda en Google me ha llevado a creer que la transmisión en vivo no es posible hasta 2.1 android.android live streaming of tv

¿Es correcto?

Mientras que consigo código de la música straming de MediaPlayer y puedo usar el tipo de la misma mediante el establecimiento de abajo método:

mp.setAudioStreamType(2);

Pero quiero saber que es suficiente para la transmisión solo código como el que y guarde el archivo como a continuación método:

private void setDataSource(String path) throws IOException { 
     if (!URLUtil.isNetworkUrl(path)) { 
      mp.setDataSource(path); 
     } else { 
      Log.i("enter the setdata","enter the setdata"); 
      URL url = new URL(path); 
      URLConnection cn = url.openConnection(); 
      cn.connect(); 
      InputStream stream = cn.getInputStream(); 
      if (stream == null) 
       throw new RuntimeException("stream is null"); 
      File temp = File.createTempFile("mediaplayertmp", "dat"); 
      String tempPath = temp.getAbsolutePath(); 
      FileOutputStream out = new FileOutputStream(temp); 
      byte buf[] = new byte[128]; 
      do { 
       int numread = stream.read(buf); 
       if (numread <= 0) 
        break; 
       out.write(buf, 0, numread); 
      } while (true); 
      mp.setDataSource(tempPath); 

      try { 
       stream.close(); 
       Log.i("exit the setdata","exit the setdata"); 
      } 
      catch (IOException ex) { 
       Log.e(TAG, "error: " + ex.getMessage(), ex); 
      } 
     } 
    } 

¿Hay algún material extra necesario para la transmisión de TV en vivo? Guía de Pls para mí

+0

¿Qué quiere decir con la transmisión de TV? ¿Qué protocolo estás usando? – dongshengcn

+0

Hay una aplicación de TV móvil para Android 1.x (por ejemplo [SFR TV] (https://market.android.com/details?id=com.sfr.android.mobiletv&feature=search_result). Funciona solo en Francia cuando usted tiene una suscripción SFR. – david

+0

¿cómo compartir esto? –

Respuesta

5

Dirección "Es suficiente": absolutamente no.

Está guardando todos los datos de la URL en el dispositivo, y luego los reproduce. Esto funciona si puedes garantizar que es un clip pequeño, pero la "transmisión de televisión en vivo" implica que estamos hablando de un flujo de longitud desconocida enviado a una tasa en tiempo real.

El impacto de esto es: programa a largo

  1. A N-minutos se llevará a N-minutos para transmitir al dispositivo antes de iniciar la reproducción.
  2. Una transmisión larga tiene el potencial de llenar todo el almacenamiento disponible.

El método MediaPlayer.setDataSource(FileDescriptor fd) debe leer los datos de cualquier fuente para la que pueda obtener un FileDescriptor, incluidos los sockets.

Los detalles exactos de cómo usar esto variarán en función del protocolo que esté utilizando, pero en esencia es necesario leer los datos de la fuente de difusión, transcodificarlos a una forma adecuada y canalizarlos a la fd.

Cuestiones relacionadas