Я использую проигрыватель для iOS, используя AVPlayer
.
Я использую ссылку на бэкэнд-сервис, который возвращает 301 и перенаправляет на ссылку на песню в 7Digital.
Задержки в Испании (где я нахожусь):
пинг до бэкэнда: 40 мс
ping to 7Digital: 20 мс
Когда я играю песню в Испании, для начала воспроизведения требуется 2 секунды.
По какой-то причине, если я проигрываю эту песню из Сингапура, для начала воспроизведения требуется 8 секунд. В эти 8 секунд AVPlayer.reasonForWaitingToPlay
равен AVPlayerWaitingWhileEvaluatingBufferingRateReason
, пока не начнет играть.
Задержки в Сингапуре:
пинг до бэкэнда: 360 мс.
ping to 7Digital: 300 мс.
Я пробовал с разными игроками, такими как VLCKit
и StreamingKit
, с одинаковыми результатами.
Также я пробовал с [player playImmediatelyAtRate:1]
и player.automaticallyWaitsToMinimizeStalling=false;
с такими же результатами.
Если я использую эту песню: [http://techslides.com/demos/samples/sample.mp3][1],, это займет 4 секунды, чтобы начать играть в Сингапуре, и 2,5 секунды в Испании.
ping для techslides.com из Сингапура: 500 мс.
ping для techslides.com из Испании: 150 мс.
Если я проигрываю эту песню из браузера, она не задерживается как в Испании, так и в Сингапуре.
Есть идеи, что здесь происходит? Это действительно сбивает с толку.
Редактировать:
Это код, который я использую:
NSURL *url = [[NSURL alloc] initWithString:urlString];
AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
AVPlayerItem *anItem = [AVPlayerItem playerItemWithAsset:asset];
player.automaticallyWaitsToMinimizeStalling=false;
player = [AVPlayer playerWithPlayerItem:anItem];
[player addObserver:self forKeyPath:@"status" options:0 context:nil];
[player addObserver:self forKeyPath:@"timeControlStatus" options:0 context:nil];
//[player play];
[player playImmediatelyAtRate:1];