AVPlayer
имеет свойство rate
, предназначенное для управления скоростью воспроизведения. 1.0
- нормальная скорость, тогда как значения, такие как 2.0
или 5.0
, должны воспроизводиться на 2x и 5x соответственно.Как вы получаете плавное высокоскоростное воспроизведение с AVPlayer?
Когда я устанавливаю значение скорости воспроизведения выше 1.0
(скажем 10.0
), воспроизведение очень прерывистое, и похоже, что большое количество кадров падает, поскольку игрок не может идти в ногу с ним.
Однако те же значения в QuickTime Player (с тем же фильмом) обеспечивают плавное воспроизведение для ставок 2x, 5x, 10x, 30x and 60x
(как сообщает QuickTime Player).
Я создал тестовое приложение OS X, которое содержит не более AVPlayerView
и две кнопки для установки скорости воспроизведения. Скорость 1.0
работает так, как ожидалось, но скорость 10.0
производит очень прерывистое воспроизведение.
Однако AVPlayerView
имеет нечетное странность в том, что если вы щелчок мыши на шкале времени воспроизведения, чтобы искать в другое место (в то время как он играет на 10x и изменчивый), то AVPlayerView
будет «исправить» воспроизведение и кино будет воспроизводиться гладко в 10 раз. Все, что нужно, это щелкнуть на временной шкале воспроизведения.
Кто-нибудь знает, как добиться плавного воспроизведения ставок, отличных от 1x? Это, очевидно, не проблема с аппаратным обеспечением или проблема с размером файла, так как QuickTime Player и AVPlayerView могут это сделать.
Попытка
Это question предполагает, что это может быть аудио вопроса (и на самом деле, как QuickTime Player и AVPlayerView отключения звука при переадресации), но все попытки с моей стороны либо отключить все звуковые дорожки, немым все треков или изменения алгоритма звукового тона, похоже, не повлияли. Воспроизведение было еще изменчивым, даже когда не было звука.
Я также попытался остановить воспроизведение, а затем вызвал prerollAtRate:completionHandler
с новой скоростью, но это тоже не имеет значения.
Что делает QuickTime Player и AVPlayerView, что обеспечивает плавное воспроизведение фильмов со скоростью 10x, 30x или даже 60x?
ли вы найти решение этой проблемы? Если да, то что это было? –
Нет, извините. Мне пришлось создать собственное решение, но это не так хорошо, как хотелось бы. В долгосрочной перспективе я думаю, что лучший опыт воспроизведения потребует более глубокого копания и обработки декодирования кадра вне использования AVPlayer. – kennyc
Под MacOS 10.12.3/Xcode 8.2.1, я подтвердил некоторые из перечисленных выше: скорость до 2.0 не проблема, но установка 'AVPlayer.rate' значения более 2.0 вызывает прерывистое воспроизведение; использование AVPlayerView для изменения скорости воспроизведения приводит к плавному воспроизведению на всех скоростях; устанавливая скорость сначала до 0.0, а затем вызывая 'prerollAtRate (atRate :, completHandler:)' и устанавливая высокий уровень в обработчике завершения, не решает проблему; создание AVMutableComposition только с видеодорожкой не решает проблему; отключение звуковой дорожки не решит проблему. – Jamborino