You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过媒体响应查看Icecast流元数据并在Google Action中展示歌曲元数据至description字段

关于Google Action播放Icecast流并展示元数据的解决方案

好问题!我来帮你拆解这两个核心需求,结合你给出的代码一步步说明:

1. 能否用playAudio的description字段在Nest设备显示动态歌曲元数据?

答案是可以,但需要结合动态更新。你当前代码里的description是静态传入的contentPlayer,这只会在播放启动时显示一次初始内容。而Icecast流的歌曲元数据是实时变化的(每切换一首歌就会更新),Nest设备不会自动刷新这个字段,所以要实现实时显示,你需要:

  • 首先在初始化播放时,用当前的元数据填充description(比如第一首歌的信息)
  • 当Icecast流的元数据更新时,调用Google Action的updateMediaSession方法主动推送新的元数据,更新设备上的显示

举个更新元数据的代码示例:

// 当你获取到最新的Icecast歌曲元数据后
this.$googleAction.$audioPlayer.updateMediaSession({
  name: titlePlayer, // 可选择更新电台名称或当前歌曲名
  description: "Coldplay - Yellow", // 这里传入最新的艺术家+歌曲名
  image: {
    large: {
      alt: radioName,
      url: radioImageUrl
    }
  }
});

这样Nest设备的播放界面就会实时刷新显示当前播放的歌曲信息了。

2. 如何获取Icecast流中的元数据?

Icecast提供了两种常用的方式获取实时元数据,你可以根据自己的技术栈选择:

方式一:调用Icecast的官方状态API

大多数Icecast服务器都提供JSON格式的状态接口,你可以直接请求这个接口拿到当前播放的元数据。比如你的Icecast服务器地址是http://your-icecast-server:8000,请求地址通常是:

http://your-icecast-server:8000/status-json.xsl

返回的JSON里会包含icestats -> source -> streamtitle字段,这就是当前播放的歌曲信息(格式一般是“艺术家 - 歌曲名”)。你可以在Action的服务端定时请求这个接口(比如每30秒一次),或者监听接口返回的变化来触发更新。

方式二:用流媒体库直接解析流中的元数据

如果你的服务端是Node.js环境,可以用icy这类库直接连接到Icecast流,监听元数据更新事件。示例代码如下:

const icy = require('icy');

// 替换成你的Icecast流地址
const radioUrl = "http://your-icecast-server:8000/stream";

icy.get(radioUrl, (res) => {
  // 监听元数据更新事件
  res.on('metadata', (metadata) => {
    const parsedData = icy.parse(metadata);
    const currentSong = parsedData.StreamTitle;
    console.log('当前播放歌曲:', currentSong);
    // 拿到数据后,调用updateMediaSession推送给Google Action
    this.$googleAction.$audioPlayer.updateMediaSession({
      description: currentSong
      // 其他字段如果不需要更新可以省略
    });
  });
});

注意事项

  • 如果你用API方式获取元数据,要确保Icecast服务器允许跨域请求,或者在你的Action服务端做代理请求(避免前端跨域问题)
  • 元数据更新频率不要过高,Icecast一般每切换一首歌才会更新一次,定时请求的话30秒一次足够,用事件监听更高效
  • Nest设备的显示区域有限,description字段尽量简洁,比如只保留“艺术家 - 歌曲名”,避免过长被截断

内容的提问来源于stack exchange,提问作者DevRad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 11:12:50