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 来实现,将它们分配为identifierAVMetadataIdentifier(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 滑块

QML 滑块刻度线在开始和结束时带有文本

视频播放结束后如何返回 tvOS 中的 Main.storyboard?

Swiper之滑块3

如何处理 tvOS 遥控器中的菜单按钮操作

带有模块增强的 MUI 覆盖滑块颜色选项