我正在尝试实现一个MPMedia播放器来播放互联网文件。到目前为止,我已经设法打开媒体播放器与我主持的视频链接。当我试图加载一个不直接映射到文件,而是被重定向到文件的url时,问题就开始了。
最初的url如下所示: h*tp://www.example.com/numbers/numbers/numbers
当我将它放在浏览器中时,它会自动更改为这样的内容:h*tp://www.example.com/number s.mp4?to=number
当我直接使用初始url时,就像我使用直接url时一样,播放机出现了,并且在没有播放视频的情况下无法正常运行。
我已经尝试过NSURLConnection来获得重定向url,但是我没有能够让它正常工作,不知怎么说,方法- connection:willSendRequest:redirectResponse: get被调用。我认为这可能是因为它已经在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/,因为链接返回请求它的设备的令牌访问。
提前谢谢。
发布于 2012-02-01 13:19:14
我解决了。这句话的意思是:
while(self.redirecting);我正在执行主线程,从而阻止方法连接: willSendRequest: redirectResponse:被调用。我已经解决了它,得到了该行下面的代码,并将其放入从重定向方法调用的另一个函数中。我还必须修改重定向方法,因为它被多次调用,甚至在到达mp4之前使用原始url。
如果你花时间阅读这个问题,谢谢你。
https://stackoverflow.com/questions/9062338
复制相似问题