Chcę przekonwertować adres URL youtube na plik mp3. Obecnie mogę pobrać mp4 przy użyciu modułu ytdl węzła, tak:node.js: jak potokować - youtube do mp4 na 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))
Po zakończeniu pobierania, przekonwertować mp4 do mp3 przy użyciu modułu biegle-ffmpeg, tak:
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'
)
Nie chcę zapisywać całego mp4 przed rozpoczęciem konwersji mp3. Jak mogę potokować mp4 do proc, więc wykonuje konwersję, gdy otrzymuje fragmenty mp4?
Jeśli dobrze rozumiem, to nadal pobiera cały mp4, ale zamiast zapisywać i konwertować, konwertuje podczas pobierania/przesyłania strumieniowego. Jeśli oryginalny plik MP4 ma 80 MB, a wynikowy plik MP3 wynosi 6 MB, to pobiera 80 MB, prawda? –
mp4 jest wysyłany do Ciebie za pośrednictwem strumienia, youtube Wątpię, pozwoli ci zażądać tylko sepreate mp3 stream .. musisz dl całość w innych pracach –