Есть ли способ заставить AVPlayer загружать аудио в буфер, как это делает AVAudioPlayer при вызове для подготовки к воспроизведению? Я пытаюсь устранить задержку между нажатием пользователем кнопки воспроизведения и началом воспроизведения звука. AVAudioPlayer кажется более мгновенным, но мне нужно воспроизводить файлы из библиотеки iPod.
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 несколько песен, он автоматически предварительно буферизует следующую песню во время воспроизведения первой песни. Я не знаю, можно ли это использовать в вашей ситуации или нет.
Похожие вопросы
Новые вопросы
iphone
НЕ ИСПОЛЬЗУЙТЕ этот тег, если вы не обращаетесь конкретно к iPhone и / или iPod touch от Apple. Для вопросов, не зависящих от оборудования, используйте тег [ios]. Больше тегов, которые нужно рассмотреть, это [xcode] (но только если вопрос касается самой IDE), [swift], [target-c] или [cocoa-touch] (но не [cocoa]). Пожалуйста, воздержитесь от вопросов, касающихся iTunes App Store или iTunes Connect. Если вы используете C #, пометьте [mono].