MPMoviePlayerController与启动UIWebView以流式传输电影的优缺点

时间:2009-06-10 16:16:41

标签: iphone uiwebview youtube mpmovieplayercontroller streaming-video

我有一位客户以Flash格式提供网络视频内容。我的任务是帮助他们在iPhone应用中显示视频。

我意识到第一步是将这些视频转换为适合iPhone的Quicktime格式。

然后我将不得不帮助客户找出如何或在何处托管这些文件。如果这很棘手,我认为他们可以在YouTube上托管。

然而,我主要担心的是采用哪种方法来传输视频。 MPMoviePlayerController与使用流的URL启动UIWebView有什么优缺点?有什么区别吗?他们中的一个或多或少是宽容的吗?其中一个是更好的用户体验吗?我可能会遇到任何陷阱?

我认为在iPhone上播放视频非常简单。尝试两者并将其作为后备可用是否合理,还是浪费时间?我正在努力安排这一点,所以我很乐意听到任何人这样做的真实经历。

2 个答案:

答案 0 :(得分:25)


编辑:我在这个答案中的原始示例使用CGRectZero框架初始化了webview。这适用于iOS 3.2。从iOS 4开始,webview必须具有非零帧或视频将无法播放。我在下面编辑了我的示例,以反映这一变化。


这里接受的答案不准确。实际上,您可以使用UIWebView来传输视频,并且在某些方面它比MPMoviePlayerController更好。如果您告诉UIWebView通过loadRequest:请求视频文件(例如mp4),它将打开一个新窗口并在您的应用程序中流式传输视频。与MPMoviePlayerController不同,UIWebView创建的视频窗口可以旋转为横向或纵向。视频结束后,用户可以关闭此窗口并返回到您的应用。


编辑2:由于您现在可以实现使用MPMoviePlayerViewController旋转的视频播放器,我再也不能想到使用此答案中描述的技术将UIWebView用于视频的原因。


提示:由于UIWebView创建了自己的窗口来播放视频,因此您甚至不需要将UIWebView添加到视图层次结构中。你可以创建UIWebView对象并调用loadRequest:来播放视频而不必将对象传递给addSubview:。

self.webView = [[[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
NSURL *url = [NSURL URLWithString:@"http://www.jonathancoulton.com/music/thingaweek/CodeMonkey.mp3"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];

答案 1 :(得分:9)

UIWebView实际上无法播放视频。使用UIWebview导航到Youtube页面只需启动iPhone的Youtube应用程序。以某种方式执行此操作将在播放视频后将控制权返回给您的应用。见这里:http://iphoneincubator.com/blog/tag/uiwebview

我建议使用MPMoviePlayer Controller,只要你只做简单的流媒体。这里有一些示例代码可以帮助您入门:

NSString *url = @"http://www.example.com/path/to/movie.mp4";
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc]
                                        initWithContentURL:[NSURL URLWithString:url]];
[moviePlayer play];
相关问题