iOS Mediaplayer и перенаправление URL - PullRequest
0 голосов
/ 30 января 2012

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

Исходный URL выглядит следующим образом: h * tp: //www.example.com/numbers/numbers/numbers

и когда я помещаю его в свой браузер, он автоматически изменяется на что-то вроде этого: h * tp: //www.example.com/numbers.mp4? To = числа

Когда я использую исходный URL-адрес напрямую, так же, как я делал с прямыми URL-адресами, проигрыватель включается и сразу же выключается, не воспроизводя видео.

Я пробовал NSURLConnection, чтобы получить URL-адрес перенаправления, но я не смог заставить его работать, каким-то образом метод - connection: willSendRequest: redirectResponse: не вызывается. Я думаю, что это может быть потому, что он был удален в iOS 5, но я не знаю никаких альтернатив, и такого рода проблемы действительно недокументированы.

Вот мой код: (Я пропустил инициализацию shortUrl, она работает).

NSLog(@"%@",shortUrl);

redirecionando=TRUE;

NSURLConnection * conection = [[NSURLConnection alloc]initWithRequest:[NSURLRequest requestWithURL:shortUrl] delegate:self];
[conection start];

while(self.redirecting);

self.moviePlayerController = [[MPMoviePlayerViewController alloc] initWithContentURL:finalurl];
moviePlayerController.view.frame = self.view.bounds;
[self presentMoviePlayerViewControllerAnimated:moviePlayerController];
moviePlayerController.moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
moviePlayerController.moviePlayer.shouldAutoplay = YES;
[moviePlayerController.moviePlayer prepareToPlay];
moviePlayerController.moviePlayer.fullscreen=YES;



}

- (NSURLRequest *)connection: (NSURLConnection *)inConnection
             willSendRequest: (NSURLRequest *)inRequest
            redirectResponse: (NSURLResponse *)inRedirectResponse;
{
    finalurl=inRequest.URL; 
    self.redirecting=FALSE;
    return inRequest;
}

Я знаю, что этот последний метод не вызывается, я NSLogged это. Прямо сейчас, когда приведенный выше код выполняется, он просто ждет из-за цикла while.

Кстати, я не могу использовать внешний API для обнаружения перенаправления, например http://longurl.org/, потому что ссылка возвращает токен для устройства, которое запрашивает это.

Заранее спасибо.

1 Ответ

1 голос
/ 01 февраля 2012

Я решил это. Это получается с помощью строки:

while(self.redirecting);

Я блокировал основной поток и, таким образом, не позволял вызывать метод connection: willSendRequest: redirectResponse:. Я решил, получив код ниже этой строки и поместив его в другую функцию, вызываемую из метода перенаправления. Мне также пришлось изменить метод перенаправления, потому что он вызывался много раз, даже с исходным URL-адресом, прежде чем попасть в mp4.

Спасибо, если вы нашли время, чтобы прочитать вопрос.

...