2011-02-10 21 views
7

Rozwijam aplikację, w której muszę zaimplementować transmisję na żywo tv. Moja wyszukiwarka Google doprowadziła mnie do przekonania, że ​​transmisja na żywo nie jest możliwa do wersji 2.1 na Androida.Android streaming na żywo z telewizji

Czy to prawda?

Jak uzyskać kod straming muzyki MediaPlayer i mogę korzystać z niego typ ustawiając poniżej sposobem:

mp.setAudioStreamType(2);

ale chcę wiedzieć, czy to wystarczy dla streamingu tylko takiego kodu i zapisać plik jak poniżej sposobem:

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); 
      } 
     } 
    } 

Czy istnieje jakiś extra rzeczy potrzebne dla streamingu na żywo tv? Pls przewodnik do mnie.

+0

Co masz na myśli mówiąc o telewizji strumieniowej? Z jakiego protokołu korzystasz. – dongshengcn

+0

Istnieje aplikacja mobilnej telewizji na Androida 1.x (na przykład [telewizja SFR] (https://market.android.com/details?id=com.sfr.android.mobiletv&feature=search_result). Działa tylko we Francji, gdy masz subskrypcję SFR. – david

+0

plz podziel się tym, jak rozwiązać ten problem? –

Odpowiedz

5

Przypisywanie "Czy to wystarczające": absolutnie nie.

Zapisujesz wszystkie dane z adresu URL na urządzeniu, a następnie je odtwarzasz. Działa to, jeśli możesz zagwarantować, że jest to mały klip, ale transmisja na żywo z telewizji na żywo oznacza, że ​​mówimy o strumieniu o nieznanej długości wysłanym w czasie rzeczywistym.

Oddziaływanie to:

  1. N-minutowy program będzie wziąć N-minut, aby przesyłać do urządzenia przed rozpoczęciem odtwarzania.
  2. Długa transmisja może wypełnić całą dostępną pamięć.

Metoda MediaPlayer.setDataSource(FileDescriptor fd) powinna odczytywać dane z dowolnego źródła, do którego można uzyskać narzędzie FileDescriptor, w tym gniazda.

Dokładne informacje na temat tego, jak korzystać z tej funkcji, będą różne w zależności od używanego protokołu, ale zasadniczo należy odczytywać dane ze źródła emisji, transkodować je do odpowiedniego formularza i przesłać do fd.

Powiązane problemy