首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AVMetadataItem中设置swift3标识符?

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

Stack Overflow用户
提问于 2016-09-21 09:09:22
回答 1查看 2.8K关注 0票数 2

描述:

我正在尝试设置identifier of AVMetadataItem in swift3,就像这个苹果视频中提到的那样。然而,这段视频是预快的。

swift2中,它看起来如下所示:

代码语言:javascript
复制
let metadataItem = AVMetadataItem(identifier: AVMetadataCommonIdentifierTitle, value: "Title here")

但是,在swift3中,构造函数已经不存在了。

有一个空的构造函数,这个构造函数是:

代码语言:javascript
复制
AVMetadataItem(propertiesOf: AVMetadataItem, valueLoadingHandler: (AVMetadataItemValueRequest) -> Void)

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

问题:

如何设置identifier of AVMetadataItem in swift3

编辑:

按照Lucas的建议,用AVMutableMetadataItem()进行了尝试。

代码语言:javascript
复制
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)

}

在这里使用:

代码语言:javascript
复制
    let cmTimeStart = CMTimeMake(0, 0)
    let cmTimeDuration = CMTimeMake(10, 1)

    let timeRange = CMTimeRange(start: cmTimeStart, duration: cmTimeDuration)

    let timedMetadataGroup = self.setupNavigationMarker(title: "test", description: "description test" , timeRange: timeRange)
    let timedMetadataGroupList = [timedMetadataGroup]
    let navigationMarkersGroup = AVNavigationMarkersGroup(title: "Chapters", timedNavigationMarkers: timedMetadataGroupList)
    //predefined avPlayerItem
    avPlayerItem.navigationMarkerGroups.append(navigationMarkersGroup)

它编译和运行,但没有导航标记(也就是章节)时,视频播放。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-21 09:20:51

以这种方式使用AVMutableMetadata而不是AVMetadata,您可以根据自己的选择修改identifier

代码语言:javascript
复制
let titleItem =  AVMutableMetadataItem()
titleItem.identifier = AVMetadataCommonIdentifierTitle
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39612162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档