I-330 - Посты

Опубликовано: Январь 28, 2023 от I-330

Радио Агора. Почему это "не отстой"

Предисловие :

Вы ботан, который слушает музыку целыми днями? Вы хотите навязать свои музыкальные вкусы другим людям? Тогда этот пост для вас. За последние пару месяцев в сотрудничестве с единственным @h00 на agora road мы создали радиостанцию с единственной целью - превратить любителей вейпорвейв в ценителей Драм-н-бэйс.

Как же это работает? Как и все хорошее в жизни, все начинается с небезопасного rtmp-потока, идущего через ужасное интернет-соединение за тысячи километров от публичной ретрансляции. Сам поток находится в сети с середины 2022 года, но активно вещает только с конца 2022 года. Если вы хотите ознакомиться с ним, то можете послушать его здесь.

RTMP :

Первоначальный rtmp-поток поступает на старый ПК Dell, который отображает визуализатор, воспроизводит звук и отправляет трансляцию через OBS на сервер откачки, спрятанный где-то в центральной части США. После попадания на сервер откачки поток повторно транслируется в открытый доступ со значительно большей пропускной способностью и безопасностью, где его может прослушать любой человек, имеющий rtmp-совместимый медиаплеер (vlc, mpv, kodi).

Однако, поскольку к потоку rtmp нельзя подключиться через веб-браузер, пришлось внести в него некоторые изменения. Используя ffmpeg, мы смогли преобразовать rtmp-поток в два отдельных аудио- и аудио/видеопотока. Затем эти потоки пропускаются через приложение icecast2, которое создает веб-видео- и аудиопоток, который может быть вставлен в любую веб-страницу.

Скрипт ffmpeg:

while true;
do ffmpeg -i rtmp://162.142.45.168:420/agora/radio \
-acodec libopus -b:a 64k \
-vcodec libvpx -b:v 500K -crf 25 -vf scale=720:480 -content_type video/webm \
icecast://source:PASSWD@LOCALIP:PORT/livevid.webm;
sleep 10;
done

ICECAST2 & ИНТЕРНЕТ :

Однако поток Icecast2 не идеален, и для того, чтобы современные веб-браузеры могли его поддерживать, его необходимо зашифровать. Для этого я создал туннель cloudflare от своего сервера и перенаправил его трафик на заранее настроенный адрес домена. Это позволило обеспечить SSL-шифрование, а также получить глобально доступную панель управления, с помощью которой я могу настраивать параметры icecast2 "на лету".

Дальше все было относительно просто. Я разработал простой веб-интерфейс для слушателей и встроил в него аудиопоток Icecast2. Проигрыватель WinAmp на сайте был импортирован из проекта Webamp, который переделал Webamp2 на Javascript с воспроизведением звука в реальном времени и поддержкой Milkdrop. Я все еще работаю над тем, как встроить видеопоток, не разрушая пропускную способность и не снижая качества видео. Тем не менее, я планирую, что в скором времени на сайте появится альтернатива rtmp-видео... возможно.