MPMoviePlayerViewController播放媒體檔案時在ios5.0上的區別–修改

來源:互聯網
上載者:User

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

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

    NSURL *localURL = [[NSURL alloc] initWithString: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 = [NSURL
URLWithString: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的文檔

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.