静默播放音频
基于Node实现后台静默播放音频。
静默播放音频
前言:
因业务需要,要求在电脑上实现播放音频,要实现这一点并不难也无技术可言,但甲方要求无感播放,即在播报音频时不能弹出媒体播放界面也不能打开第三方软件,要安安静静的打枪的不要,这不是为难我一个前端吗,在网页上怎么可能实现呢?思来想去就决定取巧用Node写一个后端,暴露一个接口,在网页上调用该接口时实现音频播报。
实现:
在几番尝试过后最终选定 sound-play ,其它库要嘛无法播放要嘛就是在播放时会唤醒并打开系统媒体播放器或第三方音乐播放器,无法完成静默播放的需求,废话不多说直接上代码。
注意事项:
1、需要安装插件sound-play。
2、需要再项目根目录下创建一个mp3文件夹用于存放所有音频文件。
3、音频文件类型最好是wav,其它格式暂未尝试可自行尝试。
const sound = require("sound-play");
const express = require('express');
const app = express();
const path = require('path');
const port = 6565;
app.get('/playAudio', async (req, res) => {
try {
const { ordinal } = req.query;
if (!ordinal) {
res.status(500).json({ error: 'ordinal is missing!' });
return;
}
// 音频文件目录所在,我把音频文件都放在了项目的mp3文件内,ordinal为音频文件名
const audioPath = path.join(__dirname, 'mp3', `${ordinal}.wav`);
sound.play(audioPath).then(() => {
res.json({code: 0});
}).catch((err) => {
res.json({code: 1, err: "请检查该音频文件是否存在!"});
});
} catch (error) {
res.status(500).json({ error: 'Unable to read images directory' });
}
})
app.listen(port, () => {
console.log(`Server running at http://127.0.0.1:${port}`);
});
