35

我目前正在使用child_process命令行在mplayer本地机器上播放音频,以及我的 Node.JS 应用程序。这行得通,但它并不是一个很好的解决方案。我最大的问题是从 mplayer 开始到音频开始播放需要 500 毫秒。

有没有更好的播放音频的方法?最好是压缩音频,但我会尽我所能。

4

8 回答 8

37

我建议使用node-speaker,它将原始 PCM 数据输出到您的扬声器(基本上,它播放音频)。

如果您正在播放诸如 mp3 文件之类的文件,您可能需要先将其解码为 PCM 数据,这正是node-lame所做的。

希望有帮助。

于 2013-01-02T01:58:44.497 回答
14

我发现(在 Mac OS 上)最简单的是使用

exec('afplay whatever.mp3', audioEndCallback)
于 2013-06-14T14:17:13.747 回答
9

我想你问的是在 nodejs 生态系统中是否有任何好的模块可以处理音频?

每当你有这类问题时,你应该首先去npmjs并输入一个合适的关键字。

这是我在 npmjs 网站上找到的与音频相关的模块列表。

substacks 的音频对我来说看起来不错。

于 2012-09-22T11:57:59.863 回答
8

介绍,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');
于 2020-02-22T21:32:45.930 回答
7

您还可以使用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");
 });
于 2017-07-14T10:27:09.857 回答
7

查看sound-play,这是一个无需使用外部播放器即可在 Windows 和 MacOS 上运行的简单解决方案:

const sound = require('sound-play')
sound.play('music.mp3')

免责声明:我是这个包的作者。

于 2019-10-23T07:37:31.853 回答
6

查看node-groove - Node.js 绑定到 libgroove:

该库提供播放列表上音频的解码和编码。它旨在用作音乐播放器应用程序的后端,但它足够通用,可用作任何音频处理实用程序的后端。

免责声明:我编写的库是免费的、开源的,不隶属于任何产品、服务或公司。

于 2014-06-13T00:32:42.953 回答
0

您可以使用播放声音模块和路径来实现此目的。

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);
于 2021-02-03T11:36:48.230 回答