Работает ли обратная очистка так же гладко, как и очистка вперед в iOS с использованием AVPlayerItem?

Я использовал AVPlayer для воспроизведения видео. Я использую следующую строку кода для прямой очистки, и она отлично работает. но когда я прокручиваю его назад с помощью ползунка, он кажется прерывистым и пропускает несколько кадров.

let valueToUpdate = Float(value) * Float(self.highlightsPlayer.clipTimeDuration)
self.highlightsPlayer.highlightsPlayerItem?.seek(to: CMTimeMakeWithSeconds(TimeInterval(valueToUpdate), 240))

Есть ли какое-либо решение, при котором прямая и обратная очистка работают одинаково?

заранее спасибо.


person hpp    schedule 07.12.2016    source источник


Ответы (1)


Это связано со сжатием и ключевыми кадрами. Представьте, что вы просматриваете сжатое видео. Каждые 10 секунд вы получаете полное изображение, но для каждого кадра между этими 10-секундными кадрами вы получаете только измененные пиксели. Таким образом, сканировать вперед легко, вы просто комбинируете пиксели по мере продвижения и показываете меньше кадров в зависимости от скорости. Вернуться назад не так-то просто. Чтобы отойти хотя бы на 1 кадр от одного из ваших ключевых кадров, вам нужно вернуться к предыдущему ключевому кадру (на 10 секунд назад), а затем скомпоновать все изображения до нужного.

Очевидно, что это немного упрощено, так как существуют алгоритмы сжатия с переменной скоростью, но это должно дать вам общее представление.

person amergin    schedule 07.12.2016
comment
отличная информация. Как я могу перекодировать его, чтобы он быстро прокручивался и назад? - person Roi Mulia; 12.03.2018