AzuraCast 使用 Icecast(目前为 Icecast 2.4.0-kh10-ac4)来广播现场广播。
当新的听众连接时,Icecast 可以选择将媒体文件添加到直播流的前面。
这就是Icecast 文档关于选项有话要说<intro>
(我的粗体):
可选值,用于指定在新侦听器连接时但在发送正常流之前将内容发送给新侦听器的文件。确保指定文件的格式与流格式匹配. 指定的文件是附加到 webroot在被打开之前。
格式相同
为了确保介绍文件具有与流完全相同的编码格式,我使用了流的简短转储(mplayer -dumpstream <mountpoint_url>
)作为介绍文件进行测试。
直接编辑 icecast.xml?不可以。
现在,站点的 Icecast 配置文件通常位于/var/azuracast/stations/<station_slug>/config/icecast.xml
运行 AzuraCast 的服务器上(使用默认设置)。
我遇到的第一个问题是 AzuraCasticecast.xml
每次启动或重新启动 Icecast 时都会覆盖该文件,因此无法直接编辑。
从 AzuraCast 内部更改 Icecast 设置
幸运的是,我设法通过在自定义配置字段(位于编辑个人资料>广播)下面是一个例子:
{
"location" : "Overrides location",
"mount" : [{
"intro" : "/intro-128.mp3"
},{
"intro" : "/intro-64.aac"
}],
"paths" : {
"webroot" : "/usr/local/share/icecast/web"
},
"directory" : {
"yp-url-timeout" : "15",
"yp-url" : "http://dir.xiph.org/cgi-bin/yp-cgi"
}
}
icecast.xml
当 Icecast 重新启动时,这会成功转换为 XML (仅保留相关标签):
<icecast>
<location>Overrides location</location>
...
<mount type="normal">
<mount-name>/radio.mp3</mount-name>
...
<intro>/intro-128.mp3</intro>
</mount>
<mount type="normal">
<mount-name>/radio.aac</mount-name>
...
<intro>/intro-64.aac</intro>
</mount>
<paths>
<basedir>/usr/local/share/icecast</basedir>
<webroot>/usr/local/share/icecast/web</webroot>
...
</paths>
...
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
</directory>
</icecast>
但不,它不会播放...
但我无法找到使它工作的组合<intro>
和设置。<webroot>
嘿!Webroot 不存在!
奇怪的是:默认<webroot>
值甚至不存在于服务器上。我尝试创建路径并将简介文件放在那里,但它不会播放(即使重新启动 Icecast 后也是如此),也不会在您http://<host:port>/intro-128.mp3
直接请求时显示(这是您所期望的,因为它位于 Web 根目录中)。
当我将值更改<webroot>
为另一个目录时,Icecast Web 前端停止工作(尽管流仍然有效),并且直接请求介绍文件也不起作用。
这让我怀疑 AzuraCast 以某种方式将 Icecast 的请求“重定向”到文件系统。
Docker? 还是弃用?
我的 AzuraCast 在 VPS 中的 Docker 安装中运行。当然,所有这些路径和文件做居住里面Docker 卷。但是只是要确定, 我还尝试直接在主机服务器上创建路径,但目前没有成功。
(是的,变化已生效。)
我确认更改icecast.xml
已生效,因为我可以在 Icecast 上看到覆盖的位置,并且流已在目录。
有什么提示吗?
答案1
知道了!
要设置安装的简介文件,首先需要在 Icecast 的 webroot 中的某个位置提供该文件,这实际上是/usr/local/share/icecast/web
里面Docker服务stations
。为此,我们需要使用 AzuraCast 文档中描述的方法将文件映射到使用自定义默认轨道
编辑 docker-compose.override.yml
由于docker-compose.yml
在更新 AzuraCast 时可能会被覆盖,我们将创建(或编辑)docker-compose.override.yml
以添加我们的映射。
docker-compose.override.yml
要从主机服务器上的 shell创建或编辑,您可以输入:
# cd /var/azuracast
# nano docker-compose.override.yml
粘贴以下 YAML 内容(根据您实际情况调整路径):
version: '2.2'
services:
stations:
volumes:
- /path/to/your/file.mp3:/usr/local/share/icecast/web/intro.mp3
(在 nano 中,按 ^O 保存,按 ^X 退出。)
重启 AzuraCast
您需要(完全)重启 Docker 服务以使新映射生效。在 shell 中:
# docker-compose down
# docker-compose up -d
# docker-compose start
编辑 Icecast 的挂载点设置
与可怜的 OP 一样编辑站点的 Icecast 设置不同,直接在挂载点的设置上指定介绍设置更加直接。
点击挂载点,然后编辑按钮。在自定义前端配置(在最底部)添加以下行:
{ "intro" : "intro.mp3" }
并确保文件名与您设置的文件名相匹配docker-compose.override.yml
。
点击保存更改,然后是橙色重新启动以应用更改重新启动 Icecast。
享受你的介绍!
请收听您的电台,听听您美妙的介绍。