我想要node.js將極長的音頻文件轉換爲mp3,第二個數據在stdout上可用,node.js應該將它發送給客戶端供他們播放。node.js live streaming ffmpeg stdout to res
我寫了下面這段代碼,當它工作時,html5音頻/視頻標記會一直等到ffmpeg完成代碼轉換,因爲我想在ffmpeg做它的事情時開始播放視頻。
var ffmpeg = childProcess.spawn('ffmpeg', [
'-i', params.location, //location of the specified media file
'-f', 'mp3',
'pipe:1'
]);
res.writeHead(200, {
'Content-Type': 'audio/mp3'
});
ffmpeg.stdout.pipe(res);
編輯1:不知道爲什麼,但如果params.location指向電影一切似乎工作。但如果它是一個音頻文件,ffmpeg似乎不會輸出到標準輸出,直到其100%轉換。
編輯2:原來,由於mp4文件不是因果關係(http://en.wikipedia.org/wiki/Causal_system),您無法將mp4文件轉儲到標準輸出。因此,如果你使用webm它的作品。只要確保使用webm支持編譯ffmpeg(對於自制程序用戶:brew install ffmpeg --with-vpx --with-vorbis)。
我已經上傳了GitHub的要點顯示兩個函數來發送實時MP3/WebM譯碼:https://gist.github.com/cobookman/c1a9856a4588496b021a
原來,這是由於prams.location指向一個mp3文件。仍然不知道如何讓ffmpeg管道以較低比特率重新轉碼的mp3文件。 – blasteye
所以無法弄清楚如何讓ffmpeg發揮出色,所以我現在使用lame for * audio-> mp3,而ffmpeg for * video - > webm/h.264。不知道ffmpeg有什麼問題。 – blasteye