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 设置
幸运的是,我通过在自定义配置字段(位于Edit Profile > Broadcasting下)中输入 JSON 来覆盖(部分)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 的请求“重定向”到文件系统。
码头工人?进还是出?
我的 AzuraCast 在 VPS 内的 Docker 安装中运行。当然,所有这些路径和文件都驻留在Docker 卷中。但可以肯定的是,我也尝试直接在主机服务器上创建路径,但到目前为止没有成功。
(是的,更改已生效。)
我确认更改icecast.xml
已生效,因为我可以在 Icecast 上看到被覆盖的位置,并且流已在dir.xiph.org上注册。
知道了!
要设置挂载的介绍文件,您首先需要使其在 Icecast 的 webroot 中的某个位置可用,这实际上是在
/usr/local/share/icecast/web
Dockerstations
服务中。为此,我们需要使用 AzuraCast 文档中描述的方法映射文件以使用自定义默认轨道编辑 docker-compose.override.yml
由于
docker-compose.yml
在更新 AzuraCast 时可能会被覆盖,我们将创建(或编辑)docker-compose.override.yml
以添加我们的映射。docker-compose.override.yml
要从主机服务器上的 shell创建或编辑,您可以键入:粘贴以下 YAML 内容(调整路径到您的配件):
(在 nano 中,按 ^O 保存,按 ^X 退出。)
重新启动 AzuraCast
您需要(完全)重新启动 Docker 服务以使新映射生效。在外壳中:
编辑你 Icecast 的挂载点设置
与其像糟糕的 OP 那样编辑电台的 Icecast 设置,不如直接在挂载点的设置上指定介绍设置要简单得多。
单击Mount Points,然后单击特定挂载点的Edit按钮。在自定义前端配置(在最底部)下,添加以下行:
并确保文件名与您在
docker-compose.override.yml
.单击Save Changes,然后单击橙色Restart to Apply Changes以重新启动 Icecast。
享受你的介绍!
收听您的电台,聆听您优美的介绍。