2

説明:

このアップルビデオで述べたように、identifierをに設定しようとしています。ただし、動画はSwift3以前のものです。AVMetadataItemswift3

それswift2は次のようになります。

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

ただし、swift3そのコンストラクターにはもう存在しません。

空のコンストラクタとこれがあります:

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

を設定するメソッドはないようですidentifier

質問:

の をどのように設定identifierAVMetadataItemますswift3か?

編集:

Lucas の提案に従って 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)

コンパイルして実行しますが、ビデオの再生時にナビゲーション マーカー (別名チャプター) は提案されません。私は何が欠けていますか?

4

1 に答える 1