В ЭФИРЕ
РАДИО И И . RU
PROFESSIONAL DUAL-DECK STUDIO
ЛОКАЛЬНОЕ ВРЕМЯ
00:00:00
ТАЙМЕР ЭФИРА
00:00:00
НАЖМИ ДЛЯ ЗВУКА! ⬇
ДЕКА A
WEB AUDIO
ТРЕК НЕ ВЫБРАН
BPM: ---
00:00:00
-00:00:00
TEMPO
0.0%
ПРИЕМНИК ЭФИРА (FM)
88.0
OFF
ОЖИДАНИЕ
ГЛАВНЫЙ МИКШЕР
A
CROSSFADER
B
ДЕКА B
WEB AUDIO
ТРЕК НЕ ВЫБРАН
BPM: ---
00:00:00
-00:00:00
TEMPO
0.0%
> ОЖИДАНИЕ ЭФИРА <
ФОНОТЕКА (ПЛЕЙЛИСТ)
0 ТРЕКОВ
ПЛЕЙЛИСТ ПУСТ. НАЖМИТЕ "ДОБАВИТЬ ТРЕКИ".
НАСТРОЙКИ ВЕЩАНИЯ
Укажите адрес WebSocket-сервера, на который будет отправляться аудио-поток для Icecast.
СЕРВЕР-МОСТ ДЛЯ ВЕЩАНИЯ (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-адрес.
