我目前正在使用child_process
命令行在mplayer
本地机器上播放音频,以及我的 Node.JS 应用程序。这行得通,但它并不是一个很好的解决方案。我最大的问题是从 mplayer 开始到音频开始播放需要 500 毫秒。
有没有更好的播放音频的方法?最好是压缩音频,但我会尽我所能。
我目前正在使用child_process
命令行在mplayer
本地机器上播放音频,以及我的 Node.JS 应用程序。这行得通,但它并不是一个很好的解决方案。我最大的问题是从 mplayer 开始到音频开始播放需要 500 毫秒。
有没有更好的播放音频的方法?最好是压缩音频,但我会尽我所能。
我建议使用node-speaker,它将原始 PCM 数据输出到您的扬声器(基本上,它播放音频)。
如果您正在播放诸如 mp3 文件之类的文件,您可能需要先将其解码为 PCM 数据,这正是node-lame所做的。
希望有帮助。
我发现(在 Mac OS 上)最简单的是使用
exec('afplay whatever.mp3', audioEndCallback)
介绍,audic
。它不使用任何本机依赖项,因此它不会像更高层的答案那样中断。
观察:
import Audic from 'audic';
const audic = new Audic('audio.mp3');
await audic.play();
audic.addEventListener('ended', () => {
audic.destroy();
});
或更简单地说:
import {playAudioFile} from 'audic';
await playAudioFile('audio.mp3');
您还可以使用play-sound
模块:
使用 npm 安装,运行命令:
npm install play-sound --save
现在在您的代码中使用:
var player = require('play-sound')(opts = {})
player.play('./music/somebody20.flac', function (err) {
if (err) throw err;
console.log("Audio finished");
});
查看sound-play,这是一个无需使用外部播放器即可在 Windows 和 MacOS 上运行的简单解决方案:
const sound = require('sound-play')
sound.play('music.mp3')
免责声明:我是这个包的作者。
查看node-groove - Node.js 绑定到 libgroove:
该库提供播放列表上音频的解码和编码。它旨在用作音乐播放器应用程序的后端,但它足够通用,可用作任何音频处理实用程序的后端。
免责声明:我编写的库是免费的、开源的,不隶属于任何产品、服务或公司。
您可以使用播放声音模块和路径来实现此目的。
npm install play-sound
import path from 'path';
const __dirname = path.resolve();
import sound from 'sound-play';
const filePath = path.join(__dirname, "file.mp3");
sound.play(filePath);