Image

(Последнее изменение: 06.11.2024)

Debian 12 Linux Radio stream (rtmp) (Opam, gd, ffmpeg, Liquidsoap)

В этом руководстве мы создадим свое интернет радио и запустим его вещание в Youtube или Rutube (RTMP), добавим фоновую анимацию и подготовим плейлист. В данном руководстве мы выполняем установку от пользователя root, если у Вас обычный, используйте команду sudo.

Вы можете заказать готовый сервер с данной конфигурацией на форме заказа VPS сервера.


Наиболее часто задаваемые вопросы:

  • Мы хотим, чтобы все данные находились у нас. Можете ли Вы произвести всю эту настройку на нашем оборудовании?

    Да, Вы можете заказать установку и настройку данной конфигурации на Вашем оборудовании по ссылке.


Фрагмент результата данной конфигурации:



1. Установим необходимые пакеты:

apt update
apt upgrade
apt-get install libfreetype6-dev
apt-get install opam
opam init

eval $(opam env)

opam switch create cs3110-2022fa ocaml-base-compiler.4.14.0

eval $(opam env)

opam depext gd ffmpeg liquidsoap
opam install gd ffmpeg liquidsoap

eval $(opam env)

2. Создадим папки для музыки, фонового видео:

mkdir /home/radio
mkdir /home/radio/music

3. Создадим файл конфигурации самой радио-станции:

nano /home/radio/radio1.liq

# permission to run the script from the root user
settings.init.allow_root.set(true)

# metadata functions
song_author = ref('')
def apply_song(m) =
song_author := m["artist"]
end

song_title = ref('')
def apply_song2(m) =
song_title := m["title"]
end

def get_track_name_text()
"$(artist) - $(title)" % [
("artist", song_author()),
("title", song_title())
]
end

# audio source
audio = playlist(reload_mode="watch", "/home/radio/music")
audio = mksafe(audio)

# video source (gif, mp4)
background = single("/home/radio/background.gif")

# add logo
background = video.add_image(x=1120, y=20, width=153, height=56, file="/home/radio/logo.png", background)

# calling metadata
audio.on_track(apply_song)
audio.on_track(apply_song2)

# drawtext
background = video.add_text(color=0xFFFFFF, font="/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", speed=0, x=50, y=50, size=26,
get_track_name_text,
background)

# mixing sources
radio = mux_video(video=background, audio)

#rtmp+codec
url = "rtmp://Адрес и ключ от стриминговой платформы по протоколку RTMP"
enc = %ffmpeg(format="flv",
%video(codec="libx264", width=1280, height=720, pixel_format="yuv420p",
b="750k", maxrate="750k", minrate="750k", bufsize="1500k", profile="Main", preset="veryfast", framerate=30, g=60),
%audio(codec="aac", samplerate=44100, b="128k"))

# output
output.url(fallible=true, url=url, enc, radio)

3.1 Укажите переменную URL в зависимости от сервиса куда будете вещать:

Youtube

url = "rtmp://a.rtmp.youtube.com/live2/Ключ, сгенерированный Youtube"
Rutube

url = "rtmp://rtmp-1.brz.rutube.ru/live_push/Ключ, сгенерированный Rutube"
VK

url = "rtmp://ovsu.mycdn.me/input/Ключ, сгенерированный VK"

3.2 Проверьте в файле конфигурации верность пути как папке music и поместите туда свои музыкальные файлы, опция reload_mode="watch" говорит о том, что как только в папке появится новый файл, он будет сразу добавлен в очередь воспроизведения.

audio = playlist(reload_mode="watch", "/home/radio/music")

3.3 Укажите верный путь для трансляции видео фона:

background = single("/home/radio/background.gif")

Это может быть статическая png, jpg картинка или видео анимация gif, mp4. Файл фоновой анимации зациклен.

3.4 Укажите верный путь для файла логотипа Вашего канала:

background = video.add_image(x=1120, y=20, width=153, height=56, file="/home/radio/logo.png", background)

При необходимости отредактируйте размер и позицию.

4. Запуск радио и проверка работы:

cd /home/radio
liquidsoap radio1.liq

Появится лог обработки и если никаких ошибок нет, трансляция идет успешно, перейдите на страницу где Вы ее создали и проверьте работу.

4.1 Создание и авто-запуск службы:

cd /home
apt install git
git clone https://github.com/savonet/liquidsoap-daemon.git
cd /home/liquidsoap-daemon
./daemonize-liquidsoap.sh /home/radio/radio1.liq

4.2 Команды:

Запуск

systemctl start radio1-liquidsoap

Остановка

systemctl stop radio1-liquidsoap

Статус

systemctl status radio1-liquidsoap

Наше радио готово, то что получилось Вы можете посмотреть в примере ролика перед началом настройки. Данный протокол поддерживают большое кол-во популярных сервисов.




Mikulski
30.08.2023 16:27
👍