Описание:
Я пытаюсь установить identifier
из AVMetadataItem
в swift3
, как указано в это яблочное видео. Тем не менее, видео pre-swift3.
В swift2
это будет выглядеть примерно так:
let metadataItem = AVMetadataItem(identifier: AVMetadataCommonIdentifierTitle, value: "Title here")
Однако в swift3
этого конструктора больше не существует.
Есть пустой конструктор и вот этот:
AVMetadataItem(propertiesOf: AVMetadataItem, valueLoadingHandler: (AVMetadataItemValueRequest) -> Void)
Кажется, не существует никаких методов для установки identifier
.
Вопрос:
Как установить identifier
из AVMetadataItem
в swift3
?
Редактировать:
Пробовал с AVMutableMetadataItem(), как предложил Лукас.
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)
}
и здесь в использовании:
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)
Он компилируется и запускается, но при воспроизведении видео не предлагаются навигационные маркеры (также известные как главы). Что мне не хватает?