tvOS - 覆盖开始时间/结束时间滑块 AVPlayerViewController

tvOS - Override start time / end time slider AVPlayerViewController

我正在使用 AVPlayerViewController 来播放 HLS 文件,但开始时间始终是 00:00,结束时间是 HLS 清单中事件的持续时间。

相反,我希望显示事件的开始时间和事件的结束时间。

我发现可以使用:AVKitMetadataIdentifierExactStartDate / AVKitMetadataIdentifierExactEndDate

但是当我创建一个 AVMutableMetadataItem 并尝试将其分配为 AVKitMetadataIdentifierExactStartDate 作为标识符时,它似乎不存在。所以我有点卡住了。

有人知道吗?

经过几天的研究,我发现这可以通过创建 AVMutableMetadataItem 来实现,将它们分配为 identifierAVMetadataIdentifier(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