AzuraCast:自托管网络电台管理器

AzuraCast:自托管网络电台管理器

我正在运行带有 icecast-2.3.2 和 ices-0.4.0 的 Ubuntu 服务器环境以启用互联网广播流。

我有一个包含音乐文件的目录,大部分是 MP3,我们称之为/PATH/TO/MUSIC。我还有一些包含广告歌曲和播客的目录。/PATH/TO/JINGLES/PATH/TO/PODCASTS

到目前为止,我的服务器已启动并运行。

有效的方法:

  • 使用脚本和 cron-job 从音乐目录创建每日随机播放列表。
  • 运行 IceCast2-Server 并使用 IceS 流式传输播放列表文件。

我现在的问题是:

  • 如何在特定时间播放播客和广告歌曲?例如,每隔一小时播放特定的广告歌曲,或每周四晚上 8 点播放特定的播客?

我曾尝试在互联网上搜索该主题,但似乎没有针对该无线电自动化问题的“最终解决方案”,而且似乎很多解决方案都相当粗糙,不是吗?

请记住这是一个服务器环境,带有 GUI 的解决方案不会有帮助。

我感谢有关这个主题的任何提示和经验!

答案1

AzuraCast:自托管网络电台管理器

来源:https://github.com/AzuraCast/AzuraCast

Azuracast 是一个自托管的网络广播管理套件,包括交钥匙安装工具和一个易于使用的网络应用程序来管理您的电台。http://azuracast.com/

特征

使用 AzuraCast,您可以:

  • 管理您的媒体:从网络上传歌曲、将音乐组织到文件夹中以及在浏览器中预览歌曲。
  • 创建播放列表:设置始终播放的标准播放列表、按时间段播放的预定播放列表或每 x 首歌曲播放一次或每 x 分钟播放一次的特殊播放列表。
  • 设置现场 DJ:启用或禁用主播/DJ 的现场直播,并为每个主播创建单独的帐户。
  • 接受听众请求:让您的听众通过 API 和简单的面向公众的听众页面从您的播放列表中请求特定的歌曲。
  • 分析和报告:跟踪电台听众的各方面表现。查看每首歌曲的表现报告。
  • 电台自动驾驶:AzuraCast 可以根据歌曲对听众数量的影响自动将歌曲分配到播放列表。
  • 委托管理:为每个站长创建和删除单独的管理员帐户。
  • ...和更多。

支持的网络电台软件

  • AzuraCast 使用 LiquidSoap 作为“AutoDJ”来随机播放歌曲和播放列表,并提供始终在线的广播流。您也可以连接到 LiquidSoap 并以 DJ 的身份广播自己的现场活动。

  • 为了向公众广播您的电台,AzuraCast 支持网络广播的两个黄金标准,IceCast (v2.4) 和 ShoutCast (v2)。您可以随时切换电台使用的其中一种。

您还可以使用 AzuraCast 作为中继或收集听众统计信息以及 AzuraCast 不管理的电台的其他数据的工具。

支持的操作系统

有两种方法可以安装 AzuraCast:

  1. 使用 Docker 和 Docker Compose(推荐):此方法包含预构建容器映像中的所有 AzuraCast 依赖项。更新和安装速度更快,软件兼容性问题也更少。此方法适用于支持最新版本 Docker Engine 和 Docker Compose 的任何计算机;两者都可以作为 AzuraCast 安装程序脚本的一部分进行安装。

  2. 传统安装(仅限 Ubuntu 16.04):从干净的 Ubuntu 映像,您可以使用随附的安装程序脚本将 AzuraCast 直接安装到您的服务器上,该脚本使用 Ansible 来管理依赖项。使用此方法安装和更新速度较慢,但​​安装后您可以更好地控制软件。如果您的服务器上安装了其他软件,它可能会与 AzuraCast 冲突,因此请始终使用此方法从干净安装开始。

我们一直在寻求扩大与主机操作系统的兼容性,并且我们欢迎任何为其他环境构建新部署脚本的帮助。

AzuraCast 包含的内容

无论您使用的是传统安装程序还是 Docker 容器,AzuraCast 都依赖于相同的软件堆栈来运行:

  • NGINX 用于提供网页和无线代理
  • MariaDB 作为主数据库
  • PHP 7.2 为 Web 应用程序提供支持
  • InfluxDB 用于基于时间序列的统计
  • Redis 用于会话、数据库和常规缓存
  • LiquidSoap 是始终在播放的“AutoDJ”
  • IceCast 2 作为广播前端(Icecast-KH 安装在支持的平台上)
  • ShoutCast 2 DNAS 作为替代广播前端(仅限 x86/x64)安装 AzuraCast

安装 AzuraCast

Docker 安装(推荐)

我们强烈建议通过 Docker 安装和使用 AzuraCast。所有必要的软件包均由我们的自动化工具构建,因此安装非常简单,只需下载预编译的映像即可。无需担心与主机操作系统的兼容性,因此任何主机(包括 Windows 和 MacOS)都可以开箱即用。

  1. 安装 Docker 和 Docker Compose 您的计算机或服务器应运行最新版本的 Docker 和 Docker Compose。如果您从头开始,可以使用以下简单脚本来安装两者:

    wget -qO- https://get.docker.com/ | sh
    COMPOSE_VERSION=`git ls-remote https://github.com/docker/compose | grep refs/tags | grep -oP "[0-9]+\.[0-9][0-9]+\.[0-9]+$" | tail -n 1`
    sudo sh -c "curl -L https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose"
    sudo chmod +x /usr/local/bin/docker-compose
    sudo sh -c "curl -L https://raw.githubusercontent.com/docker/compose/${COMPOSE_VERSION}/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose"
    

    如果你不是以 root 身份安装,系统可能会提示你添加当前用户到 Docker 组(即usermod -aG docker $user)。完成此操作后,你应该注销或重启,然后再继续下面的操作。

  2. 拉取 AzuraCast Docker Compose 文件

    选择您希望 AzuraCast 的配置文件在主机上的服务器上存在的位置。

    在该目录中,运行此命令来提取 Docker Compose 配置文件。

    curl -L https://raw.githubusercontent.com/AzuraCast/AzuraCast/master/docker-compose.yml > docker-compose.yml
    
  3. 运行 AzuraCast Docker 安装程序

    从包含 YML 配置文件的目录中运行以下命令:

    docker-compose pull  
    docker-compose run --rm cli azuracast_install
    docker-compose up -d
    

使用 LetsEncrypt 设置 HTTPS

AzuraCast 现在支持使用 LetsEncrypt 进行全面加密。LetsEncrypt 提供免费 SSL 证书,可轻松验证和续订。

首先,确保您的 AzuraCast 实例已设置并从您要使用的域提供服务。然后,运行以下命令生成新的 LetsEncrypt 证书:

docker-compose run --rm letsencrypt certonly --webroot -w /var/www/letsencrypt  

系统将提示您指定电子邮件地址和域名。验证将自动进行。完成后,运行此命令以告诉 nginx 使用您的新 LetsEncrypt 证书:

docker-compose run --rm nginx letsencrypt_connect YOURDOMAIN.example.com

使用以下命令重新加载 nginx:

docker-compose kill -s SIGHUP nginx

您的 LetsEncrypt 证书有效期为 3 个月。要续订证书,请运行以下命令:

docker-compose run --rm letsencrypt renew --webroot -w /var/www/letsencrypt  

使用 Docker 更新

从复制 AzuraCast 的基本目录内部运行以下命令:

docker-compose down
docker-compose pull
docker-compose run --rm cli azuracast_update  
docker-compose up -d  

Docker 卷备份和还原

AzuraCast 有实用脚本,可以轻松备份和恢复 Docker 卷。

您可以使用 docker-backup.sh 备份现有卷。您可以指定自定义路径作为脚本的参数。默认情况下,脚本将在应用程序根目录中创建一个文件 backup.tar.gz。

要从该压缩文件恢复应用程序的状态,请使用 docker-restore.sh 并为其提供现有备份文件的路径。

请注意,恢复过程将替换 Docker 卷内存在的任何现有 AzuraCast 数据库或媒体。

传统安装(仅限 Ubuntu 16.04)

笔记:一些网络主机提供包含不同软件存储库的 Ubuntu 自定义版本。这可能会导致与 AzuraCast 的兼容性问题。众所周知,许多 VPS 提供商都可以与 AzuraCast 开箱即用(OVH、DigitalOcean、Vultr 等),因此如果您计划使用传统安装程序,则强烈建议您使用这些 VPS 提供商。

AzuraCast 针对速度和性能进行了优化,并且可以在非常便宜的硬件上运行,从 Raspberry Pi 3 到大多数提供商提供的最低级别的 VPS。

由于 AzuraCast 安装了自己的广播工具、数据库和网络服务器,因此您应该始终在“干净”的服务器实例上安装 AzuraCast,并且之前没有安装任何其他网络或广播软件。

以 root 用户身份执行以下命令来设置您的 AzuraCast 服务器:

apt-get update
apt-get install -q -y git
mkdir -p /var/azuracast/www
cd /var/azuracast/www
git clone https://github.com/AzuraCast/AzuraCast.git .
chmod a+x install.sh
./install.sh

如果您无法直接以 root 帐户身份登录服务器,请尝试在运行上述命令之前运行 sudo su。

安装过程将需要 5 到 15 分钟,具体取决于您的互联网连接。

基于终端的安装完成后,您可以访问服务器的公共 IP 地址(http://你的服务器的ip/)完成基于 Web 的设置。

更新

AzuraCast 还包含一个方便的更新程序脚本,该脚本可从 Git 下载最新的代码库副本、刷新站点缓存并进行任何必要的数据库更新。以具有 sudo 权限的任何用户身份运行以下命令:

cd /var/azuracast/www
sudo chmod a+x update.sh
sudo ./update.sh

答案2

答案是:liquidsoap。

洗手液,多媒体流媒体的瑞士军刀,尤其适用于网络广播和网络电视。它具有大量功能,免费且开源!

我花了几天的时间才明白流是如何生成的。liquidsoap 由描述流参数的小脚本组成。一个加载和播放 mp3 播放列表的简单脚本(我们称之为)basic.liq如下所示:

#!/usr/bin/liquidsoap

# load a playlist file
stream = playlist("/path/to/playlist.pls")

# output the playlist to icecast
source = output.icecast(%mp3, host="localhost", port="8000",
         mount="listen.m3u", password="hackme")
source(stream)

使用以下方法测试脚本:

liquidsoap --check ./basic.liq

并使用以下命令启动脚本:

liquidsoap ./basic.liq &

但liquidsoap功能更强大。例如,每隔一小时播放一次叮当声,只需添加:

# add a jingle every full hour
jingle = single("/path/to/jingle.mp3")
add([stream,switch([({0m0s},jingle)])])

但主页上描述了更多功能:

  • 静态或动态播放列表
  • 基于时间的音频源选择
  • 基于配额或时间的广告歌曲插入或混合
  • 现场 DJ 干预
  • 交互式用户请求
  • 完全可定制的过渡,例如淡入淡出
  • 音轨元数据的语音合成
  • 简单访问远程文件
  • 以及更多

值得一看的是快速开始指南,更多复杂示例以及那里的文档。

相关内容