在 Google Cast Chrome API (v3) 中使用playbackDuration/startTime 进行部分播放

Posted

技术标签:

【中文标题】在 Google Cast Chrome API (v3) 中使用playbackDuration/startTime 进行部分播放【英文标题】:Partial playback using playbackDuration/startTime in Google Cast Chrome API (v3) 【发布时间】:2017-01-05 09:07:27 【问题描述】:

我正在尝试将一个文件的 sn-p(例如,仅从 00:00:30 到 00:00:40)从 Chrome 发送方投射到默认接收方。阅读LoadRequestMediaInfoQueueItem 的API reference documentation 文档,似乎我应该能够通过这些的某种组合来做到这一点。特别是,第一个排队的项目(用CastSession#loadMedia 加载)需要将LoadRequest#currentTime 设置为偏移量(在我上面的示例中为30 秒)和MediaInfo#duration 设置为持续时间(在我的示例中为10 秒),而随后排队items 会将QueueItem#startTimeQueueItem#playbackDuration 设置为偏移量和持续时间(分别)。

但是,这在实践中并没有发生。我可以确认接收器上的队列设置了这些字段,但无论如何我都无法获得正确的 sn-p 播放。当我如上所述添加第一个媒体项目时,接收器只是从头到尾播放曲目,既不考虑偏移量也不考虑持续时间。由于LoadRequest#currentTimeMediaInfo#duration的组合有点奇怪,我尝试只使用QueueItem方法(用autoplay = false添加第一个媒体项,添加另一个队列项,删除第一个,然后开始播放队列)。在这种情况下,偏移量仍然没有得到遵守,并且持续时间最终(非常奇怪地)是startTimeplaybackDuration总和(此外,任何随后排队的项目将加载,然后在没有开始的情况下“完成”播放,我也无法弄清楚)。

还有其他人对 API 的这一部分有经验吗?我是否错误地阅读了文档并且我正在做的事情不受支持,或者我只是错误地将事情拼凑在一起?

【问题讨论】:

【参考方案1】:

我不确定我是否理解您为什么尝试使用包含多个项目的队列。首先,duration字段不是你想象的那样;这不是您想要的播放持续时间,而是正在加载的媒体的总持续时间,无论您在哪里开始或停止播放。事实上,在大多数情况下,您甚至不需要设置它;至少在大多数情况下,接收者在加载项目时会获得媒体的总持续时间。 currentTime 应该可以工作(如果不是,请在我们的SDK issue tracker 上提交错误),或者,您可以加载媒体(关闭自动播放)并“寻找”到您想要的时间然后播放。要在某个点停止,您需要监控播放位置,并在到达该点时暂停播放。

【讨论】:

以上是关于在 Google Cast Chrome API (v3) 中使用playbackDuration/startTime 进行部分播放的主要内容,如果未能解决你的问题,请参考以下文章

Google Cast API - 是不是可以在会话请求中传递自定义数据?

Chrome:Google Cast 检索可用设备列表

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

用于调用 VideoBrowserActivity 中的接收器应用程序的 API

如何使用 chrome-cast API 在发件人应用程序中获取设备名称列表

如何连接多个 Google Play 服务 API 和 Cast API