如何在swift3中设置AVMetadataItem的标识符?

时间:2016-09-21 09:09:23

标签: swift swift3 tvos avmetadataitem

说明

我正在尝试在identifier中设置AVMetadataItem swift3,如this apple video中所述。但是,该视频是pre-swift3。

swift2中,它看起来像这样:

let metadataItem = AVMetadataItem(identifier: AVMetadataCommonIdentifierTitle, value: "Title here")

但是,在swift3中,构造函数不再存在。

有一个空的构造函数和这个:

AVMetadataItem(propertiesOf: AVMetadataItem, valueLoadingHandler: (AVMetadataItemValueRequest) -> Void)

似乎没有任何方法可以设置identifier

问题:

如何在identifier中设置AVMetadataItem的{​​{1}}?

编辑:

按照卢卡斯的建议尝试使用AVMutableMetadataItem()。

swift3

在这里使用:

private func setupNavigationMarker(title: String, description: String, timeRange: CMTimeRange)-> AVTimedMetadataGroup {
    var items: [AVMetadataItem] = []
    let titleItem =  AVMutableMetadataItem()
    titleItem.identifier = AVMetadataCommonIdentifierTitle
    titleItem.value = title as (NSCopying & NSObjectProtocol)?
    items.append(titleItem)

    let descriptionItem = AVMutableMetadataItem()
    descriptionItem.identifier = AVMetadataCommonIdentifierDescription
    descriptionItem.value = description as (NSCopying & NSObjectProtocol)?
    items.append(descriptionItem)

    return AVTimedMetadataGroup(items: items, timeRange: timeRange)

}

它编译并运行但在播放视频时不会提出导航标记(也称为章节)。我错过了什么?

1 个答案:

答案 0 :(得分:3)

使用AVMutableMetadata代替AVMetadata这样您就可以根据需要修改identifier

let titleItem =  AVMutableMetadataItem()
titleItem.identifier = AVMetadataCommonIdentifierTitle