Может ли AVPlayer предварительно буферизовать звук, аналогичный подготовленному воспроизведению AVAudioPlayer? - PullRequest
3 голосов
/ 19 марта 2011

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

1 Ответ

3 голосов
/ 05 апреля 2011

Если вы используете AVPlayer для воспроизведения песни с URL-адреса, то когда вы вызываете «play» на 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 несколько песен, он автоматически буферизует следующую песню во время воспроизведения первой песни.Я не знаю, можете ли вы использовать это в своей ситуации или нет.

...