У меня есть простой HTTP-сервер, который в значительной степени просто служит файлу MP3 в кусках одинакового размера. Я пишу приложение iOS (для целей тестирования), которое в основном принимает URL-адрес и передает файл через MPMovieController
. Вот мой пример кода:MPMoviePlayerController повторно подключается несколько раз
MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] init];
[mp setMovieSourceType:MPMovieSourceTypeStreaming];
mp.contentURL = [NSURL URLWithString:@"http://127.0.0.1:8080"];
[mp play];
Это работает. НО: на моем http-сервере я вижу несколько подключений (сначала один разрывается сразу, второй поток до конца обычно, хотя иногда есть 3-е соединение).
Я знаю, что это не проблема сервера, так как, когда я делаю это:
NSData *myData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://127.0.0.1:8080"]];
... то есть только 1 соединение, которое заканчивает чтение и разрывает соединение.
Вопрос: Почему MPMoviePlayerController необходимо установить и разбить эти соединения, прежде чем заканчивать чтение файла, почему он просто не ждет, пока больше данных не будет записано в сокете? Я не смог найти соответствующие документы, которые бы объясняли это :(
PS Если вам интересно, зачем мне это нужно, вот короткое объяснение: я пытаюсь подражать сценариям реальной жизни, где принимаются байты по MPMovieController кусковых с небольшими задержками произвольной длиной между ними
Я не знаком с iOS вообще, так что возьмите это с фунтом соли ... но считаете ли вы, что «MPMoviePlayerController» может быть повторно подключен, поскольку у него недостаточно данных для продолжения игры? о времени между повторными соединениями и их отношении к отправленным кускам. Устранена ли проблема или уходит полностью, когда вы используете гораздо большие куски? Можете ли вы опубликовать захват пакетов, чтобы мы могли увидеть, есть ли что-нибудь странное в этом потоке? – Brad
Брэд, спасибо вам за руководство. Я собираюсь проверить то, что вы упомянули, и, надеюсь, получить вывод, который имеет смысл. Я скоро отправлю информацию с подробностями – Nick
Еще одна вещь, которую нужно проверить, - убедиться, что поток не ужасно поврежден. Если вы отбрасываете байты здесь или там, игроку будет сложно синхронизироваться с потоком. – Brad