MPMoviePlayerController:如何让我的视频循环?

Jay*_*y L 12 cocoa-touch mpmovieplayercontroller

提前感谢你的任何帮助,我是一个新手,并希望在这里有任何帮助..我有这个代码来播放电影,它很棒.有人可以告诉我如何使这个电影循环和重播从一开始不停止(任何代码都会有帮助).另外,我想知道如何一个接一个地播放2部电影,最好是淡入淡出或平滑过渡.感谢您的任何帮助

#import "MyAppViewController.h"

@implementation MyAppViewController

-(IBAction)button:(id)sender{
 NSString *path = [[NSBundle mainBundle]
       pathForResource:@"mymovie" ofType:@"mp4"];

 player = [[MPMoviePlayerViewController alloc]
     initWithContentURL:[NSURL fileURLWithPath:path]];

 [self presentMoviePlayerViewControllerAnimated:player];

}
Run Code Online (Sandbox Code Playgroud)

Jac*_*kin 23

repeatMode你的财产MPMoviePlayerController,以MPMovieRepeatModeOne

player = [[MPMoviePlayerViewController alloc]
          initWithContentURL:[NSURL fileURLWithPath:path]];
player.moviePlayer.repeatMode = MPMovieRepeatModeOne;
Run Code Online (Sandbox Code Playgroud)


小智 20

MPMovieRepeatModeOne很好,但它不会非常顺利地循环播放视频.请尝试以下方法(从其他帖子复制):

(我刚刚在我的iPad 3上运行iOS 5.1.1,基础SDK iOS 5.1.)

设置电影播放器​​时,将重复模式设置为MPMovieRepeatModeNone然后添加通知

[[NSNotificationCenter defaultCenter] addObserver:self
            selector:@selector(moviePlayerDidFinish:)
            name:MPMoviePlayerPlaybackDidFinishNotification
                            object:self.moviePlayer];
Run Code Online (Sandbox Code Playgroud)

然后设置选择器以在电影结束播放时进行过滤:

- (void)moviePlayerDidFinish:(NSNotification *)note
{
    if (note.object == self.moviePlayer) {
        NSInteger reason = [[note.userInfo objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue];
        if (reason == MPMovieFinishReasonPlaybackEnded)
        {
            [self.moviePlayer play];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 对我来说奇怪的是,这在模拟器中运行得很好,但在实际的手机上尝试它有时会循环,有时会卡在最后.我怀疑是一种比赛条件(实际上电影尚未完全播放时会播放比赛).当我添加一个NSTimer以延迟调用play方法时,确实它循环了(但最后是一个hickup),这不是最佳的.也许是因为.mp4文件的编解码器? (2认同)