2012-02-12 15 views
10

Chcę utworzyć aplikację, która wyświetli listę filmów od YouTube, a kiedy użytkownik kliknie wideo Youtube, moja aplikacja rozpocznie odtwarzanie dźwięku. Natknąłem się na rozwiązanie, aby najpierw pobrać wideo o rozdzielczości YouTube i wydobyć dźwięk, ale aby przyspieszyć proces, chcę bezpośrednio przenieść bity audio do odtwarzacza audio aplikacji zamiast wideo. Innymi słowy, chcę przesyłać strumieniowo dźwięk YouTube zamiast wideo w mojej aplikacji.Jak przesyłać strumieniowo tylko dane audio z wideo z YouTube na mojej aplikacji?

+1

Nie wierzę YouTube oferuje download/strumień audio-only. Jeśli masz kontrolę nad sposobem odtwarzania wideo, możesz po prostu ukryć (i ewentualnie zaoszczędzić moc procesora, nie dekodując) wideo, ale podejrzewam, że to najlepsze, co możesz zrobić. Jaka jest platforma/język? To może mieć znaczenie. – perelman

Odpowiedz

5

Wygląda na to, że jesteś już w drodze. Twoja aplikacja może wyświetlić listę filmów i pobrać wybrane. Potrzebujesz tylko infrastruktury do odtwarzania audio bezpośrednio z plików wideo.

Filmy w YouTube mogą być plikami FLV lub MP4. Wewnątrz tych plików może być MP3 lub AAC audio (możliwe są inne kodeki audio, ale nie można ich spotkać na YouTube). Oznacza to, że Twoja aplikacja musi wiedzieć, jak rozdzielić bezpośrednio pliki FLV i MP4 oraz jak dekodować dźwięk MP3 i AAC bezpośrednio na PCM. Istnieją biblioteki, które mogą pomóc w tych zadaniach, w zależności od języka i platformy.

3

spróbuj wyodrębnić audio z strumienia wideo za pomocą następującego kodu:

// the video URL is the following 
    String url = "http://137.110.92.231/~chenyu/BBC.mp4"; 

    MediaPlayer mediaPlayer = new MediaPlayer(); 
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    try { 
     mediaPlayer.setDataSource(url); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    try { 
     mediaPlayer.prepare(); // might take long! (for buffering, etc) 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    mediaPlayer.start(); 
Powiązane problemy