Получение 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)
    }

}

0 ответов

Другие вопросы по тегам