2012-02-12 20 views
10

Desidero sviluppare un'applicazione che visualizzerà un elenco di video da YouTube e quando l'utente fa clic su un video Youtube, la mia applicazione inizierà a riprodurre l'audio. Ho trovato una soluzione per scaricare prima il video YouTube ed estrarre l'audio, ma per accelerare il processo voglio trasferire direttamente i bit audio al lettore audio della mia applicazione invece che al video. In altre parole, desidero trasmettere l'audio YouTube anziché il video nella mia applicazione.Come trasmettere solo i dati audio dai video di YouTube sulla mia applicazione?

+1

Non credo che YouTube offre un solo audio download/flusso. Se hai il controllo su come viene riprodotto il video, puoi semplicemente nascondere (e possibilmente risparmiare energia alla CPU non decodificando) il video, ma sospetto che sia il meglio che puoi fare. Inoltre, su quale piattaforma/linguaggio si tratta? Potrebbe essere importante. – perelman

risposta

5

Sembra che tu sia già quasi tutto lì. La tua applicazione ha un modo per elencare i video e scaricare quelli selezionati. Hai solo bisogno di un'infrastruttura per riprodurre l'audio direttamente dai file video.

I video di YouTube possono essere FLV o MP4. All'interno di questi file possono essere audio MP3 o AAC (alcuni altri codec audio sono possibili, ma non li incontrerai su YouTube). Ciò significa che l'app deve sapere come separare direttamente i file FLV e MP4 e come decodificare l'audio MP3 e AAC direttamente su PCM. Esistono librerie per aiutare con queste attività, a seconda della lingua e della piattaforma.

3

riprova estrarre l'audio da flusso video utilizzando il seguente codice:

// 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(); 
Problemi correlati