Создание и уничтожение классов AVFoundation в фоновых очередях?
Я пытаюсь устранить некоторые хиты производительности Main Thread, которые возникают, когда я выделяю AVPlayer, AVPlayerItem и AVURLAsset в основном потоке. Имел ли кто-нибудь опыт перемещения или выделения этих объектов в фоновый поток? Точно так же может быть установлен текущий идентификатор AVPlayer в фоновом режиме?
- Как я могу управлять событием кнопки «Готово» для AVPlayer в iOS 8?
- Медленная загрузка AVPlayer
- iOS Аудио визуализация с использованием AVPlayer
- Возможно ли установить AVPlayer, чтобы устройство могло заснуть во время воспроизведения видео?
- Как добавить переход между видео при использовании AVQueuePlayer?
- Скруббер (UISlider) в AVPlayer?
- Автоматическое отображение макета в полноэкранном режиме при повороте
- iOS: Есть ли способ очистить потоковые данные AvPlayer?
Следующее, безусловно, повредит производительности прокрутки
- Создание AVPlayer, падение 10 кадров в секунду
- Добавление проигрывателя в AVPlayerLayer, падение 15 кадров в секунду
- Начало воспроизведения, падение 15/25 кадров в секунду
- Пауза воспроизведения, падение 15 кадр / с
- Удалите AVPlayer, падение на 20+ fps
Я попытался выделить AVPlayer из фонового потока, однако AVFoundation переключится на главную и выполнит выделение / инициализацию из main. То же самое с воспроизведением / паузой.
У меня есть некоторый успех при освобождении AVPlayer / AVPlayerItem в фоновом потоке. В основном вам нужно очистить последнюю ссылку на AVPlayer из фонового потока.
Вообще говоря, если документация классов не документирована как потокобезопасная, вы не должны использовать объект этого класса для нескольких потоков.
Более того, в то время как есть преимущество в том, чтобы делать меньше в основном потоке, выделение AVPlayer
, AVPlayerItem
и AVURLAsset
никогда не будет практически узким местом, о котором вам нужно беспокоиться. Вместо этого вы должны запускать Инструменты и находить реальные проблемы с производительностью, а вместо этого сосредоточиться на них.