2013-03-06 15 views
12

So che ci sono un milione di modi per scaricare un video da YouTube e quindi convertirlo in audio o elaborarlo ulteriormente. Ma di recente sono stato sorpreso di vedere un'app chiamata YoutubeToMp3 su mac che mostrava effettivamente "Skipping X mb di video" e che presumibilmente scaricava solo l'audio dal video, senza la necessità di usare bandwith per scaricare l'intero video e poi convertirlo. Mi stavo chiedendo se questo è effettivamente corretto e possibile a tutti perché non riesco a trovare alcun modo per farlo. Hai qualche idea ?Scarica SOLO l'audio da un video di YouTube

MODIFICA: Dopo alcuni test ecco alcune informazioni aggiuntive sull'argomento. Nel video, che ho cercato di ottenere l'audio da è solo un file MP4 di esempio da internet:

http://download.wavetlan.com/SVV/Media/HTTP/MP4/ConvertedFiles/MediaCoder/MediaCoder_test6_1m9s_XVID_VBR_306kbps_320x240_25fps_MPEG1Layer3_CBR_320kbps_Stereo_44100Hz.mp4

ho cercato

ffmpeg -i "input" out.mp3

ffmpeg -i "input" out.mp3 -vn

ffmpeg -i “input” -vn -ac 2 -ar 44100 -ab 320k -f mp3 output.mp3

ffmpeg -i “input” -vn copia -acodec output.mp3

Purtroppo non di questi comandi sembra essere usando meno larghezza di banda. Tutti scaricano l'intero video. Ora che hai il video puoi confermare se esiste effettivamente un comando che scarica solo il flusso audio da esso e abbassa l'uso della banda? Grazie!

+0

Il server probabilmente consente di cercare durante il download. Cioè se il link per il download è ricercabile, allora perché no. – sashoalm

+0

Questa app YoutubeToMp3 utilizza FFmpeg come back-end? Prova a catturare e vedere quali argomenti della linea di comando passa a FFmpeg. – sashoalm

+0

Se apri un URL di YouTube con JDownloader, ti proporrà diversi download, un file FLV per ogni risoluzione, l'immagine e l'MP3;) –

risposta

13

Dopo molte ricerche ho scoperto che questo non è possibile e sviluppatore un approccio alternativo:

  1. Scarica l'intestazione mp4
  2. analizzare l'intestazione e ottenere le posizioni dei byte audio
  3. Scarica i byte audio con richieste e offset di intervallo http
  4. Assemblare i byte audio e avvolgerli in un semplice contenitore ADTS per produrre un file m4a di riproduzione

In questo modo viene utilizzata solo la larghezza di banda per i byte audio. Se trovi un approccio migliore per farlo, fammi sapere.

Per un campione Android APP e l'attuazione del check-out:

https://github.com/feribg/audiogetter/blob/master/audiogetter/src/main/java/com/github/feribg/audiogetter/tasks/download/VideoTask.java

2

FFmpeg è in grado di accettare un URL come input. Se l'URL è ricercabile, FFmpeg potrebbe teoricamente saltare tutti i frame video e quindi dovrebbe scaricare solo i dati per il flusso audio.

Provare a utilizzare

ffmpeg -i http://myvideo.avi out.mp3 

e vedere se ci vuole meno larghezza di banda.

+0

Inizia a funzionare e si blocca a: libavutil 51. 73.101/51. 73.101 libavcodec 54. 59,100/54. 59,100 libavformat 54. 29,104/54. 29,104 libavdevice 54. 2,101/54. 2,101 libavfilter 3. 17,100/3. 17,100 libswscale 2. 1,101/2. 1,101 libswresample 0. 15.100/0 15.100 libpostproc 52. 0.100/52. 0.100 – Feras

+0

Beh, questo è il modo per farlo usando FFmpeg almeno. Hai chiesto come si converte solo l'audio. Ecco come. Dovrebbe funzionare, ma potrebbero esserci dei bug, naturalmente. Prova a inserire un bug nella loro mailing list o esegui il debug di te stesso. – sashoalm

+0

Questo non funzionerà mai con YouTube. FFmpeg si aspetta un file reale come input, non un URL di YouTube. Questo non è ciò che è destinato a analizzare. Se il collegamento punta a un flusso video o file valido, allora dovrebbe funzionare, ma YouTube incorpora il video come Flash, quindi FFmpeg non è in grado di analizzarlo a meno che non abbia aggiunto il supporto esplicito per YouTube. Strumenti come 'youtube-dl' fanno un lavoro molto migliore in questo. – slhck

-2

Bene, ora la sua possibile scaricare solo l'audio dei video di youtube e per questo io uso questo youtube 2 mp3 api

Funziona molto bene per me. tutto ciò che serve per inserire l'ID di YouTube e basta.

Problemi correlati