Получение Live Image времени изображения в iOS 11
Я использую код из https://github.com/genadyo/LivePhotoDemo для извлечения метки времени из AVAsset, что происходит неподвижный кадр. Это работает с фотографиями, сделанными до iOS 11 (т.е. видео h264), однако это не возвращает результатов в iOS 11 (то есть видео h265).
Что-то изменилось в iOS 11?
private let kKeyContentIdentifier = "com.apple.quicktime.content.identifier"
private let kKeyStillImageTime = "com.apple.quicktime.still-image-time"
private let kKeySpaceQuickTimeMetadata = "mdta"
extension AVAsset {
func readStillImageTime() -> CMTime? {
for track in self.tracks(withMediaType: AVMediaTypeMetadata) {
let (reader, output) = try! self.reader(track: track, settings: nil)
reader.startReading()
while true {
guard let buffer = output.copyNextSampleBuffer() else { return nil }
let group = AVTimedMetadataGroup(sampleBuffer: buffer)
for item in group?.items ?? [] {
print(item.time)
if item.key as? String == kKeyStillImageTime &&
item.keySpace == kKeySpaceQuickTimeMetadata {
return item.time
}
}
}
}
return nil
}
private func reader(track : AVAssetTrack, settings: [String:AnyObject]?) throws -> (AVAssetReader, AVAssetReaderOutput) {
let output = AVAssetReaderTrackOutput(track: track, outputSettings: settings)
let reader = try AVAssetReader(asset: self)
reader.add(output)
return (reader, output)
}
}