2012-07-06 170 views
0

我無法理解這個類,並得到它才能正常工作之前,這裏是一段代碼,我使用它:的MPMoviePlayerController播放視頻終止完成

MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:_videoURL]; 
UIImage *videoThumbnail = [moviePlayer thumbnailImageAtTime:0 timeOption:MPMovieTimeOptionNearestKeyFrame]; 
[lastImageView setImage:videoThumbnail]; 

[moviePlayer setControlStyle:MPMovieControlStyleNone]; 
[moviePlayer setShouldAutoplay:YES]; 
[moviePlayer prepareToPlay]; 

[moviePlayer.view setFrame:lastImageView.frame]; 
moviePlayer.view.transform = CGAffineTransformMakeRotation((90*M_PI)/180); 
[self.view addSubview:moviePlayer.view]; 

[moviePlayer play]; 

的唯一原因videoThumbnail線仍然有,因爲我沒有得到視頻播放,直到我只是試圖看看它是否會從那裏得到的圖像,然後突然開始工作......有點。 現在效力於2-3秒,然後終止而不發送MPMoviePlayerPlaybackDidFinishNotification或MPMoviePlayerPlaybackStateDidChangeNotification 我用Google搜索了一下週圍,但沒有找到任何有用的提示,可能會有人告訴我,什麼是錯的或者什麼,我忘了

+0

刪除這些行[moviePlayer setShouldAutoplay:YES]; [moviePlayer prepareToPlay];並檢查。如果你正在調用[moviePlayer play];那麼不需要這兩條線。 – 2012-07-06 18:52:04

回答

2

如果」不要將新創建的MPMoviePlayerController實例分配給除局部範圍變量(moviePlayer)以外的其他任何內容,則在電影播放前將取消分配電影播放器​​。 (我認爲thumbnailImageAtTime通話會使它保持一段時間。)

嘗試將電影播放器​​實例分配給保留的(強)實例變量或屬性。當然,它應該在完成時被釋放,因爲多個電影播放器​​實例不能很好地一起玩。

此外,請注意,從iOS 5起,需要撥打prepareToPlay。以下是馬特·紐伯格的編程的第28章的iOS 5,第二版

之前可以顯示電影與的MPMoviePlayerController你的界面,則必須調用prepareToPlay,這是通過MPMediaPlayer供應協議(由MPMoviePlayerController採用)。這個要求在iOS 5中是新的,並且是與以前版本系統的主要區別;如果沒有進行此調用,您的舊代碼可能會中斷。

相關問題