我想使用漫游器将来自URL(特别是audio/mpeg
)的mpeg音频流(MIME类型:https://s1-sjc.liveatc.net/kjfk_atis)不断地流到我的Discord服务器上的一个语音通道中。
我正在使用discord.js
nodejs模块,该模块以面向对象的方式处理discord API。我已经创建了一个机器人帐户,并完成了基本的“ Ping!Pong!”。测试以确保我的代码正常工作。
我不知道mpeg音频流或Discord语音通道API的工作原理,也找不到任何有经验的人。
我正在寻找一种便宜的方法,该方法只是在文本通道中以纯文本形式向用户回复URL。但是我觉得这是无能为力的。
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', msg => {
if (msg.content === 'ping') {
msg.reply('Pong!');
}
});
client.login('heregoesmybottoken');
完成的结果应连接到语音通道,并从URL https://s1-sjc.liveatc.net/kjfk_atis开始播放/流式传输音频。
编辑
对我来说,截断音频流,将其写入磁盘,然后将其从磁盘中读取]的解决方案是[[不可接受,因为这会导致大量的I / O压力。[由于没有人给出答案,我自己进行了一些调查,发现用于以https://s1-sjc.liveatc.net/kjfk_atis传输音频的技术不同于视频流的技术:它是[[未分块]],而是一个常量HTTPS请求包含大概是原始PCM数据。
const request = require('request');
const fs = require("fs");
request('https://s1-sjc.liveatc.net/kjfk_atis').pipe(fs.createWriteStream('atis.mp3'));
我编写了这段代码来下载流,实际上NodeJS已开始连续写入
atis.mp3
,直到我按下Ctrl+C
为止。该文件确实包含音频,并且可以由Windows Media Player打开。所以现在我只需要找到一种方法来将该流重定向到discord.js,并希望node-opus可以将流自动转换为正确的格式。
我想使用以下方式将URL(特别是https://s1-sjc.liveatc.net/kjfk_atis)中的mpeg音频流(MIME类型:音频/ mpeg)不断地流到Discord服务器上的一个语音通道中机器人。 ...var voice, player;
// To join channel
client.channels.get("channelid").join()
.then((connection) => {voice = connection});
// To stream audio
player = voice.playArbitraryInput("https://s1-sjc.liveatc.net/kjfk_atis");
// To stop
player.end();