【问题标题】:iOS Chromecast: Read Duration from HLS PlaylistiOS Chromecast:从 HLS 播放列表中读取持续时间
【发布时间】:2018-08-16 06:51:57
【问题描述】:

我有一个长片的 m3u8 播放列表:

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:3
#EXTINF:2.987,
https://...segment0.ts
#EXTINF:2.987,
https://...segment1.ts
#EXTINF:2.987,
https://...segment2.ts
...

带有标签#EXT-X-PLAYLIST-TYPE:VOD,关于Apple says

对于视频点播 (VOD) 会话,媒体文件可用 代表演示的整个持续时间。索引文件 是静态的,包含所有媒体文件的完整 URL 列表 自演示文稿开始以来创建。这种会话 允许客户端完全访问整个程序。

当我将此播放列表流式传输到 iOS 原生播放器或其他自定义 iOS 播放器时,播放器会确定内容的总时长并显示它。

现在我正在尝试投射相同的媒体,Chromecast 似乎不知道总持续时间。我已经连接了 GCKUIMediaController 和 UILabels 以及所有爵士乐,但播放器将播放列表视为实时流,在总持续时间内显示 --:--

如何让 Chromecast 从 HLS 播放列表中读取总时长?

这是我在 iOS Sender App 中加载此项目的方式:(或多或少)

let metadata = GCKMediaMetadata(metadataType: .movie)
metadata.setString("Blah", forKey: kGCKMetadataKeyTitle)

let mediaInfo = GCKMediaInformation(contentID: URL(string: "https://blah.m3u8"), streamType: GCKMediaStreamType.buffered, contentType: contentType, metadata: metadata, streamDuration: 0, mediaTracks: nil, textTrackStyle: GCKMediaTextTrackStyle.createDefault(), customData: nil)

let builder = GCKMediaQueueItemBuilder()
builder.mediaInformation = mediaInfo
builder.preloadTime = 10.0
builder.playbackDuration = .infinity

let item = builder.build()
item.clearItemID()

let rmc = GCKCastContext.sharedInstance().sessionManager.currentCastSession.remoteMediaClient
rmc.queueLoad([item], start: 0, playPosition: TimeInterval(0.0), repeatMode: .off, customData: nil)

我找到的一些文档:

builder.playbackDuration = .infinity

The playback duration for the item, in seconds, or INFINITY if the stream's actual duration should be used.(所以,应该设置正确。)

GCKMediaStreamType.buffered

A buffered stream type.(不确定这是做什么的,但我至少没有将其设置为.live。)

streamDuration: 0

The length of the stream, in seconds, or INFINITY if it is a live stream. Defaults to 0. 似乎与 QueueItemBuilder 上的 playbackDuration 相反?我将其设置为零。

为了让 Chromecast 从我的 HLS 流式传输视频中读取时长,我缺少什么设置?

【问题讨论】:

    标签: ios chromecast google-cast http-live-streaming m3u8


    【解决方案1】:

    问题显然在于我使用的Styled Media Receiver

    版本说明:接收器 API 和媒体播放器库基于 Cast SDK v2,并与 v2 和 CAF 发送器兼容。

    当我切换到Default Media Receiver 时,这个问题就消失了;我能够看到 VOD HLS 流的持续时间。

    我收集到此类信息是由 Chromecast 设备中运行的接收器应用程序向 iOS Cast SDK 公开的。我想 Styled Receiver 没有内置功能来计算 HLS 播放列表的持续时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-04
      • 2018-02-25
      • 2014-03-13
      • 2014-06-24
      • 2014-06-05
      • 2017-03-22
      • 2014-08-17
      • 1970-01-01
      相关资源
      最近更新 更多