如何在 iOS 中使用 GoogleCast frameWork 获取当前流位置

Posted

技术标签:

【中文标题】如何在 iOS 中使用 GoogleCast frameWork 获取当前流位置【英文标题】:How to get current stream position using GoogleCast frameWork in iOS 【发布时间】:2014-11-20 11:24:05 【问题描述】:

我正在开发一个应用程序,我将在其中使用 ChromeCast 设备连接到电视,为了实现这一点,我在我的项目中使用了 GoogleCast FrameWork,

当我尝试使用以下语句访问视频的大致流位置时遇到问题,

GCKMediaControlChannel *mediaControlChannel = [[GCKMediaControlChannel alloc] init]; NSLog(@"大概的流位置是 %f",mediaControlChannel.approximateStreamPosition);

但这会导致 20 秒的时间差。

我尝试了以下语句来获取确切的流位置,

GCKMediaStatus *deviceStatus = [[GCKMediaStatus alloc] initWithSessionID:sessionId mediaInformation:self.mediaInformation];

NSLog(@"Stream Position %f", self.deviceStatus.streamPosition);

由于上述方法有两个参数,我们需要将会话作为整数发送,但我们将会话 id 作为字符串字母数字获取,并将其转换为整数,结果为 0。

任何人都可以帮助我将会话 ID 获取为整数,或者建议我使用任何不同的方法获取当前流位置。

【问题讨论】:

【参考方案1】:

我使用以下代码来检索当前正在投射的视频的流位置,并且非常准确!我们在项目中使用的 Google Cast SDK 版本是 3.5.3。

let position = Double(GCKCastContext.sharedInstance().sessionManager.currentSession!.remoteMediaClient!.mediaStatus!.streamPosition)

希望对你有帮助!

【讨论】:

但它给出的时间间隔为 10 秒【参考方案2】:

approximateStreamPosition 应该给你一个相当准确的时间,当然不会超过 20 秒。您可以查看我们的 ios reference app 示例。

【讨论】:

【参考方案3】:

您也可以使用approximateStreamPosition。 下面的代码将打印更准确的时间。

 if let position = GCKCastContext.sharedInstance().sessionManager.currentSession?.remoteMediaClient?.approximateStreamPosition() 
                print("current time ",position)
 

【讨论】:

以上是关于如何在 iOS 中使用 GoogleCast frameWork 获取当前流位置的主要内容,如果未能解决你的问题,请参考以下文章

如何使用托管在 Google 驱动器上的 GoogleCast 示例解决 CORS 错误?

Googlecast 标签未本地化为设备语言

连接后如何在 Google Cast 上显示信息

如何检测 Chrome 中是不是安装了 Google Cast 扩展程序?

让 GoogleCast 工作

GoogleCast 简介