我正在尝试在node.js中播放一些mp3文件.问题是我设法逐个播放它们,甚至是我想并行播放它们.但我还想要的是能够控制振幅(增益)以便最终能够创建交叉渐变.谁能帮我理解我需要做什么?(我想在node-webkit中使用它,所以我需要一个基于node.js而没有外部依赖的解决方案.)
这是我到目前为止所得到的:
var lame = require('lame'), Speaker = require('speaker'), fs = require('fs');
var audioOptions = {channels: 2, bitDepth: 16, sampleRate: 44100};
var decoder = lame.Decoder();
var stream = fs.createReadStream("music/ge.mp3", audioOptions).pipe(decoder).on("format", function (format) {
this.pipe(new Speaker(format))
}).on("data", function (data) {
console.log(data)
})
Run Code Online (Sandbox Code Playgroud) 我正在制作一个 Discord 机器人,有一次我必须用 PCM 格式保存音频
voiceChannel.join().then(connection =>
{
const fs = require('fs');
// Create a ReadableStream of s16le PCM audio
var usee = message.member;
const audio = connection.receiver.createStream(usee, { mode: 'pcm' });
var idAudio = makeid(10);
audio.pipe(fs.createWriteStream(idAudio + '.pcm'));
Run Code Online (Sandbox Code Playgroud)
(idAudio 是随机生成的字符串)。问题是我需要将 PCM 文件转换为 MP3。我已经尝试使用 node-lame 但没有用。我确定我错过了一些东西。PCm 是有符号的 16 位小端 (s16le) PCM
const Lame = require("node-lame").Lame;
const encoder = new Lame({
output: "./audio-files/demox122.mp3",
bitrate: 192
}).setFile("./user_audio.pcm");
encoder
.encode()
.then(() => {
// Encoding finished
console.error("all good");
})
.catch(error => {
// …Run Code Online (Sandbox Code Playgroud)