不确定这是否是正确的提问地点。
我想知道来自互联网广播电台的音频流是否可以(并且确实)包含歌曲信息,例如标题和艺术家?我想有很多格式可能支持也可能不支持这一点,所以“是的,但前提是 x 和 y”将是一个有效的答案。
相关:如果这是可能的,并且信息在那里,例如 VLC 是否能够显示它?
不确定这是否是正确的提问地点。
我想知道来自互联网广播电台的音频流是否可以(并且确实)包含歌曲信息,例如标题和艺术家?我想有很多格式可能支持也可能不支持这一点,所以“是的,但前提是 x 和 y”将是一个有效的答案。
相关:如果这是可能的,并且信息在那里,例如 VLC 是否能够显示它?
AzuraCast 使用 Icecast(目前是 Icecast 2.4.0-kh10-ac4)进行广播直播。
Icecast 可以选择在新听众连接时将媒体文件添加到直播流中。
这就是Icecast 文档对<intro>
选项的看法(我的粗体字):
一个可选值,它将指定文件这些内容将在新侦听器连接时但在发送普通流之前发送给它们。确保指定文件的格式与流格式匹配。指定的文件在打开之前会附加到 webroot 。
为了绝对确保介绍文件与流具有完全相同的编码格式,我使用了流的简短转储 ( mplayer -dumpstream <mountpoint_url>
) 用作测试的介绍文件。
现在,站点的 Icecast 配置文件通常位于/var/azuracast/stations/<station_slug>/config/icecast.xml
运行 AzuraCast 的服务器上(使用默认设置)。
我遇到的第一个问题是AzuraCasticecast.xml
每次启动或重启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>
服务器上甚至不存在默认值。我尝试创建路径并将介绍文件放在那里,但它不会播放(即使在重新启动 Icecast 之后),也不会在您http://<host:port>/intro-128.mp3
直接请求时显示(您会期望它位于 Web 根目录中)。
当我将值更改<webroot>
为另一个目录时,Icecast Web 前端停止工作(尽管流仍然有效),并且直接请求介绍文件也不起作用。
这让我怀疑 AzuraCast 以某种方式将 Icecast 的请求“重定向”到文件系统。
我的 AzuraCast 在 VPS 内的 Docker 安装中运行。当然,所有这些路径和文件都驻留在Docker 卷中。但可以肯定的是,我也尝试直接在主机服务器上创建路径,但到目前为止没有成功。
我确认更改icecast.xml
已生效,因为我可以在 Icecast 上看到被覆盖的位置,并且流已在dir.xiph.org上注册。