【问题标题】:How to get GCKViewVideoFrameInput working in swift?如何让 GCKViewVideoFrameInput 快速工作?
【发布时间】:2016-04-25 04:00:24
【问题描述】:

尝试使用远程显示 API 将视图镜像到 chromecast。在 Android 上,它有据可查且易于实现。 iOS 示例/文档不太完整。我知道它只支持 15 fps,但这对我的需求来说很好。

如果有人让它工作,我很想看到一个小的 swift 示例,它展示了如何镜像一个简单的视图。我正在尝试用它来测试它,它在电视上什么都没有显示,并且几秒钟后设备已断开连接。通过阅读文档,当您在获得会话的前 15 秒内没有发送任何内容时,就会发生这种情况。

    var testSession: GCKRemoteDisplaySession!

    func remoteDisplayChannel(channel: GCKRemoteDisplayChannel,
    didBeginSession session: GCKRemoteDisplaySession) {
        // Use the session.
        testSession = session
        frameInput = GCKViewVideoFrameInput(session: testSession)
        // any view
        frameInput.view = testView        
    }

【问题讨论】:

  • 你能把剩下的代码贴出来吗?我也有同样的情况,但还不能让接收器显示任何内容
  • @kee23 您是否将视图容器(如 UIwindow)设置为可见?我必须将其设置为可见并将其放在电话屏幕之外(例如在-x,-y)。由于远程显示只有 720p 并按比例放大,您可以将其设置为 UIwindow 大小。
  • 我只是在初始化一个视图并将其设置为框架输入的视图。事实证明,在显示之前,我必须将其设为当前视图的子视图。因为我正在尝试复制 AirPlay 的行为,所以我会弄乱窗口。谢谢!
  • 当你把它设为子视图时,它在手机上是否可见?我很想有一种方法让它在电视上可见,而不必在手机上用 -x -y 坐标使视图脱离屏幕。谷歌对这些东西真的没有任何帮助。文档/示例很糟糕:(
  • 不,我仍然需要做同样的“hack”,所以我将它移到屏幕外 UIScreen.mainScreen().bounds 宽度和大小。如果我找到更好的解决方案,我会在这里更新

标签: ios swift chromecast google-cast


【解决方案1】:

确保您强烈引用会话以及框架输入。输入对会话的引用很弱(以避免会话和输入之间的循环)。如果会话没有被强引用并被销毁,您将在远程屏幕上看到黑色,然后超时断开连接。

【讨论】:

  • 好的,通过跟踪会话(更新上面的代码),我可以将视图发送到 Chromecast。有没有办法(技巧)发送在手机上不可见的视图?
  • 我认为您可以创建一个新的 UIWindow,设置它的大小,设置一个包含您的第二个屏幕视图的根视图控制器并将该窗口用作框架输入视图。
  • 我似乎只有在设置 window.makeKeyAndVisible() 时才能让它工作,它也显示在手机屏幕上。我可以作弊并将窗口 x,y 设置在手机屏幕之外(例如 -1000、-1000),但这看起来很糟糕。
  • @Gabeloooooo,你能发布你实现的代码吗?我将实现这个(一个 uiviewcontroller 镜像到电视一段时间,没有视频/音频),这将是一个很大的帮助,在此先感谢兄弟 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 1970-01-01
  • 2022-12-01
  • 2016-07-30
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多