Voglio convertire un url di youtube in un file mp3. Attualmente, ho scaricato il mp4 utilizzando il modulo ytdl del nodo, in questo modo:node.js: how to pipe - da youtube a mp4 a mp3
fs = require 'fs'
ytdl = require 'ytdl'
url = 'http://www.youtube.com/watch?v=v8bOTvg-iaU'
mp4 = './video.mp4'
ytdl(url).pipe(fs.createWriteStream(mp4))
Una volta completato il download, converto il mp4 in mp3 utilizzando il modulo fluente-ffmpeg, in questo modo:
ffmpeg = require 'fluent-ffmpeg'
mp4 = './video.mp4'
mp3 = './audio.mp3'
proc = new ffmpeg({source:mp4})
proc.setFfmpegPath('/Applications/ffmpeg')
proc.saveToFile(mp3, (stdout, stderr)->
return console.log stderr if err?
return console.log 'done'
)
Non voglio dover salvare l'intero mp4 prima di iniziare la conversione mp3. Come faccio a canalizzare mp4 in proc in modo che esegua la conversione mentre riceve i blocchi mp4?
Se ho capito bene, questo scarica ancora l'intero mp4 ma invece di salvare e convertire, converte durante il download/streaming. Se il file mp4 originale è 80 MB e l'mp3 risultante è 6 MB, scarica 80 MB, giusto? –
l'mp4 ti viene inviato tramite uno stream, youtube dubito che ti permetterò di richiedere solo il flusso mp3 sepreato .. devi dl il tutto in altri lavori –