tvOS - 覆盖开始时间/结束时间滑块 AVPlayerViewController
tvOS - Override start time / end time slider AVPlayerViewController
我正在使用 AVPlayerViewController 来播放 HLS 文件,但开始时间始终是 00:00,结束时间是 HLS 清单中事件的持续时间。
相反,我希望显示事件的开始时间和事件的结束时间。
我发现可以使用:AVKitMetadataIdentifierExactStartDate
/ AVKitMetadataIdentifierExactEndDate
但是当我创建一个 AVMutableMetadataItem
并尝试将其分配为 AVKitMetadataIdentifierExactStartDate
作为标识符时,它似乎不存在。所以我有点卡住了。
有人知道吗?
经过几天的研究,我发现这可以通过创建 AVMutableMetadataItem
来实现,将它们分配为 identifier
和 AVMetadataIdentifier(AVKitMetadataIdentifierExactStartDate)
然后作为值,您可以添加开始时间作为日期并将所有内容都转换为 NSCopying & NSObjectProtocol
.
设置完这两个属性后,您可以将刚刚创建的新元数据项追加到 player.currentItem.externalMetadatas
作为元数据项数组。
完整示例如下:
//Add start date
let item = AVMutableMetadataItem()
item.identifier = AVMetadataIdentifier(AVKitMetadataIdentifierExactStartDate)
item.value = startDate as? NSCopying & NSObjectProtocol
let metadataItem = item.copy() as! AVMetadataItem
//Add start date
let endTimeItem = AVMutableMetadataItem()
endTimeItem.identifier = AVMetadataIdentifier(AVKitMetadataIdentifierExactEndDate)
endTimeItem.value = endDate as? NSCopying & NSObjectProtocol
let endTimeMetadataItem = endTimeItem.copy() as! AVMetadataItem
var metadataItems = [AVMetdataItem]()
metadataItems.append(metadataItem)
metadataItems.append(endTimeMetadataItem)
self.player.currentItem?.externalMetadata = metadataItems
我正在使用 AVPlayerViewController 来播放 HLS 文件,但开始时间始终是 00:00,结束时间是 HLS 清单中事件的持续时间。
相反,我希望显示事件的开始时间和事件的结束时间。
我发现可以使用:AVKitMetadataIdentifierExactStartDate
/ AVKitMetadataIdentifierExactEndDate
但是当我创建一个 AVMutableMetadataItem
并尝试将其分配为 AVKitMetadataIdentifierExactStartDate
作为标识符时,它似乎不存在。所以我有点卡住了。
有人知道吗?
经过几天的研究,我发现这可以通过创建 AVMutableMetadataItem
来实现,将它们分配为 identifier
和 AVMetadataIdentifier(AVKitMetadataIdentifierExactStartDate)
然后作为值,您可以添加开始时间作为日期并将所有内容都转换为 NSCopying & NSObjectProtocol
.
设置完这两个属性后,您可以将刚刚创建的新元数据项追加到 player.currentItem.externalMetadatas
作为元数据项数组。
完整示例如下:
//Add start date
let item = AVMutableMetadataItem()
item.identifier = AVMetadataIdentifier(AVKitMetadataIdentifierExactStartDate)
item.value = startDate as? NSCopying & NSObjectProtocol
let metadataItem = item.copy() as! AVMetadataItem
//Add start date
let endTimeItem = AVMutableMetadataItem()
endTimeItem.identifier = AVMetadataIdentifier(AVKitMetadataIdentifierExactEndDate)
endTimeItem.value = endDate as? NSCopying & NSObjectProtocol
let endTimeMetadataItem = endTimeItem.copy() as! AVMetadataItem
var metadataItems = [AVMetdataItem]()
metadataItems.append(metadataItem)
metadataItems.append(endTimeMetadataItem)
self.player.currentItem?.externalMetadata = metadataItems