Как я могу сохранить CMTime в UserDefaults, а затем проанализировать его?

Ну, я пытаюсь запомнить currentTime() из AVPlayer в памяти устройства, чтобы продолжить воспроизведение видео после перезапуска приложения.

Я делаю приложение для просмотра фильмов с моего Raspberry PI. Есть идеи?

1 ответ

Решение

Вот расширение UserDefaults, которое позволяет вам сохранять и восстанавливать CMTime значение:

import CoreMedia

extension UserDefaults {
    func cmtime(forKey key: String) -> CMTime? {
        if let timescale = object(forKey: key + ".timescale") as? NSNumber {
            let seconds = double(forKey: key + ".seconds")
            return CMTime(seconds: seconds, preferredTimescale: timescale.int32Value)
        } else {
            return nil
        }
    }

    func set(_ cmtime: CMTime, forKey key: String) {
        let seconds = cmtime.seconds
        let timescale = cmtime.timescale

        set(seconds, forKey: key + ".seconds")
        set(NSNumber(value: timescale), forKey: key + ".timescale")
    }
}
Другие вопросы по тегам