【发布时间】:2017-09-09 19:11:08
【问题描述】:
我正在尝试将章节添加到 AVMutableComposition。视频按预期创建并发送到AVPlayer。我多么想包含章节标记(使用AVplayer 中的章节标记选项)。
我已经尝试了以下方法来创建定时元数据......但是该怎么办??
当尝试将元数据添加到AVMutableComposition 时,所有元数据项都只能获取。
let someAsset:AVURLAsset = AVURLAsset(url:URL(fileURLWithPath: "/tmp/temp.mov"))
let mutableComposition:AVMutableComposition = AVMutableComposition()
let start: Int64 = 0
let duration: Int64 = 500
let timeRange:CMTimeRange = CMTimeRange(start: CMTime(value: CMTimeValue(start), timescale: 1), end: CMTime(value: CMTimeValue(duration), timescale: 1));
var timedMetadataItems: [AVTimedMetadataGroup] = []
do {
try mutableComposition.insertTimeRange(timeRange, of: someAsset, at: mutableComposition.duration)
let metadata = AVMutableMetadataItem()
metadata.key = AVMetadataQuickTimeUserDataKeyChapter as NSCopying & NSObjectProtocol
metadata.value = "Test" as NSCopying & NSObjectProtocol
let timedMetadata = AVTimedMetadataGroup(items: [metadata], timeRange: timeRange)
timedMetadataItems.append(timedMetadata)
} catch let error as NSError {
Swift.print(error.localizedDescription)
}
return AVPlayerItem(asset: mutableComposition)
如果在不写入磁盘的情况下这样做真的是不可能的(感觉很奇怪),那么保存带有章节的视频的任何帮助也会很棒。因为我只能保存普通的元数据。
使用AVAssetExportSession 可以设置元数据并将新组合写入文件,但不能写入AVTimedMetadataGroup?
let export = AVAssetExportSession(asset: mutableComposition, presetName: AVAssetExportPresetPassthrough)
【问题讨论】:
标签: swift xcode macos swift3 avfoundation