2012-09-22 368 views
19

我正在使用child_process和命令行mplayer在本地計算機上播放音頻,並使用我的Node.JS應用程序。這有效,但它不是一個很好的解決方案。我最大的問題是,它需要從mplayer 500ms開始播放音頻。使用Node.JS播放音頻

有沒有更好的播放音頻的方法?最好壓縮音頻,但我會拿我能得到的。

+0

@lanzz是啊,我,好像我什麼,可能需要重新檢查 – Znarkus

+0

,這是什麼應用?你需要通過互聯網真正低延遲的音頻嗎? – Brad

回答

7

我想你在問什麼是在nodejs生態系統中使用音頻的好模塊?

每當你有這種類型的問題,你應該先去npmjs,只需輸入一個適當的關鍵字。

以下是我在npmjs網站上找到的與audio相關的模塊列表。

substacks的baudio對我來說很不錯。

+0

我並不清楚我想播放音頻*文件*。對於那個很抱歉。感謝您的鏈接,* komponist */* mpd *實際上是我可以使用的東西。但是我會爲這個項目保持簡單,並且用'mplayer -slave'試試我的運氣。 – Znarkus

+1

baudio絕對*不*你想要播放音頻文件 – BonsaiOak

25

我建議使用node-speaker,它輸出原始PCM數據到您的揚聲器(所以基本上,它播放音頻)。

如果您播放的是mp3文件,您可能需要先將其解碼爲PCM數據,這正是node-lame所做的。

希望有所幫助。

+0

此外,這裏是一個例子:https://gist.github.com/TooTallNate/3947591 – alessioalex

+3

需要一些不需要python的東西... – daniellmb

+1

你找到了嗎?任何不需要python的東西? – John

4

最簡單的,我發現(在Mac OS)是使用

exec('afplay whatever.mp3', audioEndCallback) 
+1

還有['open'](https://developer.apple.com/library/mac/documentation/Darwin/Reference/Manpages/man1/open.1。HTML)命令在OS X上。 – elmigranto

6

退房node-groove - Node.js的結合libgroove:

這個庫上提供了音頻的解碼和編碼播放列表。它旨在用作音樂播放器應用程序的後端,但它足夠通用,可用作任何音頻處理實用程序的後端。

免責聲明:我寫的圖書館是免費的,開放源代碼,並且不隸屬於任何產品,服務或公司。

+3

感謝您的建議。我真的很喜歡libgroove。不過,你可能想提一提你寫的。 – BonsaiOak

+3

爲什麼這是相關的?答案的質量不受模塊作者的影響。 – andrewrk

+0

我相信@BonsaiOak是正確的。 [幫助中心](http://stackoverflow.com/help/behavior)說:「發佈好的,相關的答案,如果有些(但不是全部)碰巧與您的產品或網站有關,那沒關係。 _必須在你的答案中表明你的聯繫。「 – TachyonVortex

1

從控制檯播放聲音的另一個好模塊是play。你可以使用包中包含的示例wav文件。示例代碼如下:

var play = require('play'); 
play.sound('./node_modules/play/wavs/sfx/ding.wav'); 
+0

通過npm(0.5.0)安裝的版本不執行回調。它看起來好像是在github回購中實現的,但顯然它從未被釋放。 –

1

您可以使用play-sound模塊還:

var player = require('play-sound')(opts = {}) 

player.play('./music/somebody20.flac', function (err) { 
    if (err) throw err; 
    console.log("Audio finished"); 
});