MPMoviePlayerViewController播放媒体文件时在ios5.0上的区别--修改

来源:互联网 发布:测量员软件使用说明书 编辑:程序博客网 时间:2024/06/06 15:38

Jacky Shin:
NSURL *mediaFileUrl = [NSURL URLWithString:urlStr];

    NSString *moviePath = [[NSBundlemainBundlepathForResource:@"head"ofType:@"mov"];

    NSURL *localURL = [[NSURL allocinitWithString:moviePath];

    NSURL *localURL1 = [NSURL URLWithString:moviePath];

    NSURL *localURL2 = [NSURL fileURLWithPath:moviePath];

    NSLog(@"localURL=%@, localURL1=%@, localURL2=%@", localURL,localURL1, localURL2);

输出为:

2012-12-25 15:26:57.342 MMPl[4174:907] 

localURL =/var/mobile/Applications/B89AE103-A5BF-4EFA-B3AE-B3D40DA00BD2/MMPl.app/head.mov, localURL1=/var/mobile/Applications/B89AE103-A5BF-4EFA-B3AE-B3D40DA00BD2/MMPl.app/head.mov, localURL2=file://localhost/var/mobile/Applications/B89AE103-A5BF-4EFA-B3AE-B3D40DA00BD2/MMPl.app/head.mov

实验证明,
1. 如果是播放本地文件,采用上面的localURL和localURL1都会出现播放不正常。会出现播放的页面一闪然后像是播放完毕,自动退回去了。
而使用localURL2却能正常播放。(ipad2 ios6上测试)
2.  如果是播放网络文件,如苹果官方例子MoviePlayer中使用如下代码:

NSURL *theMovieURL = [NSURLURLWithString:self.movieURLTextField.text];

是使用的URLWithString的方式,换成initWithString也可以正常播放,但换成fileURLWithPath,则会失败。


下面部分来自网上。

示例代码:

NSString *urlStr = @"http://videourl.com";
NSURL *mediaFileUrl = [NSURL URLWithString:urlStr];

MPMoviewPlayerViewController *playerVC =
[[[MPMoviePlayerViewController alloc] initWithContentURL:mediaFileUrl] autorelease];

[self presentModalViewController:playerVC animated:YES];

[[playerVC moviePlayer] play];

需要注意的是,使用本地媒体文件时,利用来进行实例化时,iOS4.X系列可以正常播放,但是到了iOS5.X时,

就必须使用下面的method来实例化,否则媒体文件不能正常播放。(本人亲测,确如所言,否则,则看不到player.view在界面上)

NSURL *mediaFileUrl = [[NSURL alloc] initFileURLWithPath:filePath];

另外,可以利用NSNotificationCenter来获取媒体文件播放相关的各种事件。
例如:

[[NSNotificationCenter defaultCenter] removeObserver:self
                                                  name:MPMoviePlayerPlaybackDidFinishNotification
                                                object:self.playerVC.moviePlayer];

  [[NSNotificationCenter defaultCenter] addObserver:self
                                           selector:@selector(mediaFinishedCallback:)
                                               name:MPMoviePlayerPlaybackDidFinishNotification
                                             object:self.playerVC.moviePlayer];

更多的Observer请参考Apple的文档

原创粉丝点击