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/")
audio = mksafe(audio)
# video source (gif, mp4)
background = single("/home/radio/")
# add logo
background = video.add_image(x=1120, y=20, width=153, height=56, file="/home/radio/", 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://"
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/"
Rutube
url = "rtmp://rtmp-1.brz.rutube.ru/live_push/"
VK
url = "rtmp://ovsu.mycdn.me/input/"
3.2 Проверьте в файле конфигурации верность пути как папке music и поместите туда свои музыкальные файлы, опция reload_mode="watch" говорит о том, что как только в папке появится новый файл, он будет сразу добавлен в очередь воспроизведения.
audio = playlist(reload_mode="watch", "/home/")
3.3 Укажите верный путь для трансляции видео фона:
background = single("/home/radio/")
Это может быть статическая png, jpg картинка или видео анимация gif, mp4. Файл фоновой анимации зациклен.
3.4 Укажите верный путь для файла логотипа Вашего канала:
background = video.add_image(x=1120, y=20, width=153, height=56, file="/home/radio/", 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
Наше радио готово, то что получилось Вы можете посмотреть в примере ролика перед началом настройки. Данный протокол поддерживают большое кол-во популярных сервисов.