tvOS - 覆盖开始时间/结束时间滑块 AVPlayerViewController
Posted
技术标签:
【中文标题】tvOS - 覆盖开始时间/结束时间滑块 AVPlayerViewController【英文标题】:tvOS - Override start time / end time slider AVPlayerViewController 【发布时间】:2022-01-06 06:34:49 【问题描述】:我使用 AVPlayerViewController 来播放 HLS 文件,但是开始时间始终是 00:00,结束时间是 HLS 清单中事件的持续时间。
相反,我希望显示事件的开始时间和事件的结束时间。
我发现可以使用:AVKitMetadataIdentifierExactStartDate
/AVKitMetadataIdentifierExactEndDate
但看起来当我创建一个AVMutableMetadataItem
并尝试将AVKitMetadataIdentifierExactStartDate
分配为标识符时,它不存在。所以我有点卡住了。
有人知道吗?
【问题讨论】:
【参考方案1】:经过几天的研究,我发现这可以通过创建AVMutableMetadataItem
来实现,将它们分配为identifier
和AVMetadataIdentifier(AVKitMetadataIdentifierExactStartDate)
然后作为值,您只需将开始时间添加为日期并将所有内容都转换为@987654324 @。
一旦您设置了这两个属性,您就可以将您刚刚创建为 metadataItems 数组的新 metadataItems 附加到 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
【讨论】:
以上是关于tvOS - 覆盖开始时间/结束时间滑块 AVPlayerViewController的主要内容,如果未能解决你的问题,请参考以下文章
音量控制 - 使用 AVFoundation、MPMovieController 的 http straming 文件的 UI 滑块