Dual-Deck DJ Studio & Live Broadcaster
Loading...
В ЭФИРЕ

РАДИО И И . RU

PROFESSIONAL DUAL-DECK STUDIO

ЛОКАЛЬНОЕ ВРЕМЯ
00:00:00
ТАЙМЕР ЭФИРА
00:00:00
REC AIR
СЕРВЕР .WEBM
НАЖМИ ДЛЯ ЗВУКА! ⬇
ПИТАНИЕ ПУЛЬТА
ДЕКА A
WEB AUDIO
ЗАГРУЗИТЬ ТРЕК A
ТРЕК НЕ ВЫБРАН
BPM: ---
00:00:00
-00:00:00
IN OUT EXIT
TEMPO
0.0%
CUE PAUSE
ПРИЕМНИК ЭФИРА (FM)
88.0
OFF ОЖИДАНИЕ
АВТОПОИСК
ГЛАВНЫЙ МИКШЕР MUTE ALL
A CROSSFADER B
ДЕКА B
WEB AUDIO
ЗАГРУЗИТЬ ТРЕК B
ТРЕК НЕ ВЫБРАН
BPM: ---
00:00:00
-00:00:00
IN OUT EXIT
TEMPO
0.0%
CUE PAUSE
> ОЖИДАНИЕ ЭФИРА <
ФОНОТЕКА (ПЛЕЙЛИСТ)
0 ТРЕКОВ
ДОБАВИТЬ ТРЕКИ (МОЖНО СРАЗУ МНОГО) ОЧИСТИТЬ
ПЛЕЙЛИСТ ПУСТ. НАЖМИТЕ "ДОБАВИТЬ ТРЕКИ".

НАСТРОЙКИ ВЕЩАНИЯ

Укажите адрес WebSocket-сервера, на который будет отправляться аудио-поток для Icecast.

WebSocket URL (Сервер-мост)
ОТМЕНА СОХРАНИТЬ

СЕРВЕР-МОСТ ДЛЯ ВЕЩАНИЯ (NODE.JS)

Сохраните этот код как server.js на вашем сервере (например, Ubuntu/Debian). Убедитесь, что установлен Node.js и утилита ffmpeg.

// 1. Установите зависимости:
//    npm install ws
// 2. Установите ffmpeg:
//    sudo apt install ffmpeg
// 3. Запустите:
//    node server.js

const WebSocket = require('ws');
const { spawn } = require('child_process');

const PORT = 8080;

// ВАШИ ДАННЫЕ ОТ ICECAST / SHOUTCAST:
// Замените "hackme" на пароль от маунта
// Замените "your-radio-server.com" на IP сервера
const ICECAST_URL = 'icecast://source:[email protected]:8000/live';

const wss = new WebSocket.Server({ port: PORT });
console.log(`[+] WebSocket Server запущен на порту ${PORT}`);

wss.on('connection', (ws) => {
  console.log('[+] Диджей подключился! Начинаем вещание...');

  // Запускаем FFmpeg для перекодирования WebM (Opus) -> MP3
  const ffmpeg = spawn('ffmpeg', [
    '-i', 'pipe:0',           // Читаем поток из WebSocket
    '-c:a', 'libmp3lame',     // Кодек MP3
    '-b:a', '192k',           // Битрейт 192 kbps
    '-content_type', 'audio/mpeg',
    '-f', 'mp3',
    ICECAST_URL               // Отправляем на Icecast
  ]);

  ffmpeg.stderr.on('data', (data) => {
    // console.log(`FFmpeg: ${data}`); // Для дебага
  });

  ffmpeg.on('close', (code) => {
    console.log(`[-] FFmpeg завершен с кодом ${code}`);
  });

  // Передаем аудио-чанки из браузера прямо в FFmpeg
  ws.on('message', (message) => {
    ffmpeg.stdin.write(message);
  });

  ws.on('close', () => {
    console.log('[-] Диджей отключился. Эфир завершен.');
    ffmpeg.stdin.end();
  });
});
Для работы нужен белый IP-адрес. ЗАКРЫТЬ