使用 Chrome API 控制 Chromecast 音频音量

Posted

技术标签:

【中文标题】使用 Chrome API 控制 Chromecast 音频音量【英文标题】:Control Chromecast Audio volume using Chrome API 【发布时间】:2016-10-21 11:40:59 【问题描述】:

使用 Chromecast Audio 时,我需要在客户端(发送方)端在 UI 中绘制适当的音量级别。我看到有两种从 Chromecast 接收(也可能设置)音量的方法 - 从 ReceiverMedia 命名空间。在我的理解中,Receiver 命名空间存储了一般设备的音量,而Media 命名空间存储了当前播放曲目的音量。

    在使用LOAD 请求加载任何曲目之前,我似乎无法通过使用GET_STATUS 请求Media 命名空间来接收媒体音量。那么如何在加载媒体之前正确显示将使用的音量?加载媒体后将 UI 中的 RECEIVER 音量更改为 MEDIA 音量看起来不是一个好的解决方案,而且会给用户带来惊喜。

    我无法使用 SET_VOLUME 请求 Receiver 命名空间来控制音量 - 我没有收到来自 Chromecast 的回复

    Json::Value msg, response;
    msg["type"] = "SET_VOLUME";
    msg["requestId"] = ++request_id;
    msg["volume"]["level"] = value; // float
    response = send("urn:x-cast:com.google.cast.receiver", msg);
    

    如果使用以下几行而不是最后一行,则媒体音量控制正常:

    msg["mediaSessionId"] = m_media_session_id;
    response = send("urn:x-cast:com.google.cast.media", msg);
    

    我在这里做错了什么?

【问题讨论】:

【参考方案1】:

为了在接收器上设置音量,您应该使用 SDK 的 API,而不是发送手工制作的消息。例如,您应该使用setReceiverVolumeLevel()。另外,请使用接收器音量而不是流音量。

【讨论】:

如果 SDK 的 API 涵盖所有平台、语言和用例,我会很高兴使用它。但由于我既没有开发 android 应用,也没有开发 ios 应用,也没有开发 Chrome 应用,所以我不能使用它。 @plátanoplomo 我正在开发一个 Android 原生 C++ 应用程序。它将被移植到其他平台。

以上是关于使用 Chrome API 控制 Chromecast 音频音量的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript fetch 命令从 google chrome 控制台请求新闻 API 运行命令时出现问题

使用 Javascript Geolocation API,SyntaxError: Unexpected Identifier in Chrome 的 Javascript 控制台

Chrome:性能数据 API

我可以从外部 javascript 访问控制台命令行 API(例如来自 Firebug 或 Chrome Inspector 控制台的 $$ 和 traceAll)吗?

在 Chrome 控制台中使用 Postman 工具/cURL/ 测试 CORS

有啥方法可以扩展 chrome 的 __commandLineAPI