AVPlayer «замораживает» приложение в начале буферизации аудиопотока
Я использую подклассAVQueuePlayer
и когда я добавляю новыйAVPlayerItem
с потоковым URL приложение останавливается на секунду или две. Под заморозкой я подразумеваю, что он не реагирует на прикосновения к пользовательскому интерфейсу. Кроме того, если у меня уже есть песня, а затем добавить еще одну в очередь,AVQueuePlayer
автоматически начинает предварительную загрузку песни, пока она все еще транслирует первую. Это позволяет приложению не реагировать на прикосновения к пользовательскому интерфейсу в течение двух секунд, как при добавлении первой песни, но песня все еще воспроизводится. Так что значитAVQueuePlayer
делает что-то в основном потоке, что вызывает явное «замораживание».
Я используюinsertItem:afterItem:
добавить мойAVPlayerItem
, Я проверил и убедился, что это был метод, который вызывал задержку. Может быть, это может быть что-тоAVPlayerItem
делает, когда он активируетсяAVQueuePlayer
в момент добавления его в очередь.
Необходимо отметить, что я использую бета-версию Dropbox API v1 для получения потокового URL-адреса с помощью вызова этого метода:
[[self restClient] loadStreamableURLForFile:metadata.path];
Затем, когда я получаю URL потока, я отправляю егоAVQueuePlayer
следующее:
[self.player insertItem:[AVPlayerItem playerItemWithURL:url] afterItem:nil];
Итак, мой вопрос: как мне этого избежать? Должен ли я выполнить предварительную загрузку аудиопотока самостоятельно без помощиAVPlayer
? Если да, то как мне это сделать?
Благодарю.