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

4
BenBernard 19 Мар 2011 в 09:18

1 ответ

Если вы используете AVPlayer для воспроизведения песни с URL-адреса, то когда вы вызываете «воспроизведение» в AVPlayer, он начинает загружать песню, а затем воспроизводит ее, когда она будет готова. Я бы предположил, что это та же функциональность, если файл является локальным. Если он исходит от вашего iPod, то время задержки уже должно быть очень небольшим.

Одна вещь, которую вы должны попробовать, это вызвать воспроизведение, а затем паузу, и AVPlayer продолжит загрузку песни, поэтому, когда вы снова вызываете воспроизведение (при условии, что это не немедленно), песня должна запускаться без каких-либо проблем. Я могу подтвердить, что это работает при воспроизведении песни с URL-адреса. Попробуйте для своего сценария.

- (void) getPlayerReady {
    // write some code here to setup the player

    [player play];
    [player pause];
}

- (IBAction) btnPlayTouched:(id)sender {
    [player play];
}

РЕДАКТИРОВАТЬ: Думаю, я должен также упомянуть, что AVQueuePlayer сделает это за вас. Если вы дадите AVQueuePlayer несколько песен, он автоматически предварительно буферизует следующую песню во время воспроизведения первой песни. Я не знаю, можно ли это использовать в вашей ситуации или нет.

4
SteveB 5 Апр 2011 в 19:54