2017-02-22 3 views
2

Я использую scaleTimeRange:toDuration: для создания эффекта быстрого движения до 10-кратной скорости видео. Но я заметил, что видео начинают заикаться при воспроизведении через AVPlayer в 10 раз.Проблемы с производительностью с AVMutableComposition - scaleTimeRange

Я также заметил, что в QuickTime OSX такая же композиция воспроизводится гладко.

В другом вопросе указывается, что причиной этого является аппаратное ограничение, но я хочу знать, есть ли способ обойти это, так что эффект быстрого движения происходит плавно по длине всего видео.

Видео функции

  • Формат: H.264, 1280x544
  • FPS: 25
  • Размер данных: 26MB
  • Скорость передачи данных: 1,17 Мбит/с

ответ

0

У меня такое ощущение, что, играя ваши видео в 10 раз, используя scaleTimeRange:toDuration, просто эффект умножения скорости передачи данных на 10, доведя его до 10 Мбит/с, которые могут обрабатывать osx-машины, но устройства iOS не могут.

Другими словами, вы создаете видеоролики, которые необходимо воспроизводить со скоростью 300 кадров в секунду, что слишком сильно толкает AVPlayer.

Если бы я не знал о вашей other question, я бы сказал, что решение экспортировать AVComposition с помощью AVAssetExportSession, что должно привести к вашей высокой FPS видео, занимающей вниз сэмпла, чтобы легче обрабатывать 30 кадров в секунду, а затем играть что с AVPlayer.

Если AVAssetExportSession не работает, вы можете попробовать применять Ускорение в силу по себе, читая кадры из исходного видео с помощью AVAssetReader и писать каждый десятый кадр в выходной файл, используя AVAssetWriter (не забудьте установить правильный временные метки презентации).

Смежные вопросы