
一、為何 Node.js 模組無法播放聲音檔
例如我裝了以下模組,但播放後都聽不到聲音: 看了許多網上的討論後才知道,這類模組不能自行播放檔案,而是需要呼叫播放程式來播放。例如上面的「play-sound」,其官網頁面有說明,支援列出的 audio player,例如「mplayer」、「aplay」,或是 Windows 系統程式「powershell」。 若使用者的 Windows 系統沒有安裝這些程式,或是沒把這些程式的執行檔設為全域變數,就無法正確呼叫對應的執行檔,自然無法成功播放聲音檔。 而 Node.js 若是仔細尋找,也是可以找到真正能播放聲音檔的模組,但因為只是要播放提醒音效這樣的小事,不太願意另外裝個肥大的模組,想再找找有沒有更簡便的解決方案。二、DOS 命令如何播放聲音檔
Node.js 有辦法執行 DOS 命令,所以接下來只要瞭解 DOS 如何播放聲音檔就沒問題了。 根據這篇「dos命令發出聲音圖文教程」,DOS 指令播放聲音檔真是超乎意料的簡單,只需直接輸入檔案路徑就好。簡單舉例,播放 D 槽下的 "wfu.mp3",只要輸入以下指令即可:D:\wfu.mp3
Windows 會自動跳出播放音檔的預設程式,例如 Windows Media Player,並播放這個檔案。
三、Node.js 如何呼叫 DOS 指令
根據這篇「Node.js 多進程」,載入- spawn
- exec
const {exec} = require("child_process");
exec("cmd.exe /c wfu.mp3");
const {spawn } = require("child_process");
spawn("cmd.exe", ["/c wfu.mp3"]);
任選一組來執行即可,這會是 Node.js 播放聲音檔最簡單的方式,不需安裝外掛模組,直接呼叫內建 child_process 模組即可。
更多 Node.js 相關文章:
这个想法很好啊,我也试试
回覆刪除