0

我正在尝试将数据发送到 chromecast,但我想直接将数据发送到某个 Chromecast,而不是在 Google Chrome 中选择它。

我想在发送数据之前跳过 Chromecast 选择。

这是要避免的。

在此处输入图像描述

我不想选择演员表,而是直接将数据转换为它。

我一直在检查session我们从中获取的对象,chrome.cast.initialize它返回如下内容:

      {
        "sessionId": "b59f1754-fd13-48cd-b237-4952a69cade4",
        "appId": "5B797F56",
        "displayName": "url-cast-sender",
        "statusText": "URL Cast ready...",
        "receiver": {
          "label": "rTflOUigItAIYPwoZZ87Uv5oK8yI.",
          "friendlyName": "Sala de Juntas",
          "capabilities": [
            "video_out",
            "audio_out"
          ],
          "volume": {
            "controlType": "attenuation",
            "level": 1,
            "muted": false,
            "stepInterval": 0.05000000074505806
          },
          "receiverType": "cast",
          "isActiveInput": null,
          "displayStatus": null
        },
        "senderApps": [],
        "namespaces": [
          {
            "name": "urn:x-cast:com.google.cast.debugoverlay"
          },
          {
            "name": "urn:x-cast:com.url.cast"
          }
        ],
        "media": [],
        "status": "connected",
        "transportId": "b59f1754-fd13-48cd-b237-4952a69cade4"
      };

正如你所看到的那样label,我一直在尝试使用它,但没有。

页面请求连接到 chromecast 的方式如下:

// click handlers
document.getElementById('requestSession').onclick = function () {
  chrome.cast.requestSession(sessionListener, onErr);
};

这似乎是在 Google Chrome 中打开选择警报的部分。

我的工作是url-cast-receiver的一个分支,你可以在这里查看演示

4

1 回答 1

1

事实证明,从前端部分是不可能的。

所以我最终使用了由 Tapanila 创建的一个名为 SharpCaster 的库其中一个控制器可以让你做这种事情,在这里你可以找到一个例子。

在使它工作时遇到了一些麻烦,并且还在存储库中打开了一个问题,但最终我自己修复了它,问题 #141

WebPageCastingTester.cs

using System.Linq;
using System.Threading.Tasks;
using SharpCaster.Controllers;
using SharpCaster.Services;
using Xunit;

namespace SharpCaster.Test
{
    public class WebPageCastingTester
    {
        private ChromecastService _chromecastService;
        public WebPageCastingTester()
        {
            _chromecastService = ChromecastService.Current;
            var device = _chromecastService.StartLocatingDevices().Result;
            _chromecastService.ConnectToChromecast(device.First()).Wait(2000);
        }

        [Fact]
        public async void TestingLaunchingSharpCasterDemo()
        {
            var controller =  await _chromecastService.ChromeCastClient.LaunchWeb();
            await Task.Delay(4000);
            Assert.NotNull(_chromecastService.ChromeCastClient.ChromecastStatus.Applications.First(x => x.AppId == WebController.WebAppId));
            await controller.LoadUrl("https://www.windytv.com/");
            await Task.Delay(4000);
            Assert.Equal(_chromecastService.ChromeCastClient.ChromecastStatus.Applications.First(x => x.AppId == WebController.WebAppId).StatusText,
                "Now Playing: https://www.windytv.com/");
        }
    }
}
于 2018-08-09T08:24:36.773 回答