Discord.js поток mpeg аудио поток в голосовой канал - PullRequest
0 голосов
/ 23 октября 2019

Я хочу постоянно передавать аудиопоток mpeg (тип MIME: audio/mpeg) с URL-адреса (в частности, https://s1 -sjc.liveatc.net / kjfk_atis ) в один из голосовых каналов намой сервер Discord использует бот.

Я использую модуль discord.js nodejs, который обрабатывает API-интерфейс Discord объектно-ориентированным способом. Я уже создал учетную запись бота и сделал базовый "Пинг! Понг!"тест, чтобы убедиться, что мой код работает.

Я понятия не имею, как работает аудиопоток mpeg или API голосового канала Discord, и не нашел никого с таким опытом.

Я искал дешевый подходкоторый просто отвечает пользователю 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 после запуска.


РЕДАКТИРОВАТЬ

Для меня решение обрезать аудиопоток, записать его на диск, затем прочитать егодиск является неприемлемым , потому что это вызывает сильную нагрузку ввода-вывода.

Поскольку никто еще не дал ответа, я провел собственное исследование и обнаружил, что метод, используемый для потоковой передачиАудио в https://s1 -sjc.liveatc.net / kjfk_atis отличается от потокового видео: оно не фрагментировано , но вместо этого постоянный HTTPS-запрос, содержащий то, что предположительно является необработанным PCMdata.

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.

Так что теперь мне просто нужно найти способ перенаправить этот поток в discord.js, и, надеюсь, node-opus автоматически преобразуетпоток в правильный формат.

...