Discord.js流mpeg音频流进入语音通道

问题描述 投票:0回答:1

我想使用漫游器将来自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服务器上的一个语音通道中机器人。 ...
javascript node.js discord.js audio-streaming mpeg
1个回答
0
投票
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();
© www.soinside.com 2019 - 2024. All rights reserved.