【问题标题】:MPMoviePlayerController: How can I make my video loop?MPMoviePlayerController:如何让我的视频循环播放?
【发布时间】:2011-06-02 14:47:19
【问题描述】:

在此先感谢您的帮助,我是新手,希望在这里提供任何帮助.. 我有这段代码可以播放电影,效果很好。有人可以告诉我如何让这部电影循环播放并从头开始不间断地重播(任何代码都会有所帮助)。另外我想知道如何播放两部电影,一部接一部,最好是淡入淡出或平滑过渡。感谢您的帮助

#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];

}

【问题讨论】:

  • 下次请格式化您的代码。

标签: cocoa-touch mpmovieplayercontroller


【解决方案1】:

MPMoviePlayerControllerrepeatMode 属性设置为MPMovieRepeatModeOne

player = [[MPMoviePlayerViewController alloc]
          initWithContentURL:[NSURL fileURLWithPath:path]];
player.moviePlayer.repeatMode = MPMovieRepeatModeOne;

【讨论】:

  • 我做到了,现在我收到一条线错误: player.repeatMode = MPMovieRepeatModeOne; >>>>对成员“repeatMode”的请求不是结构或联合 -
  • 太棒了,效果很好。好的,还有一个问题。我需要能够为我的电影添加一个计时器;即..让它在设定的时间后停止。我想为此使用一个滑块,有什么想法可以添加吗?
  • @JacobRelkin 您好,感谢您的回答,如何在播放器再次开始播放后进行循环播放而没有 0.01 秒的延迟?
  • 对于 SWIFT,使用 moviePlayer.repeatMode = MPMovieRepeatMode.One
【解决方案2】:

MPMovieRepeatModeOne 不错,但循环播放视频不是很流畅。在下面试试这个(从另一个帖子复制):

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

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

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

然后设置您的选择器以在电影播放完毕时进行过滤:

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

【讨论】:

  • 对我来说奇怪的是,这在模拟器中效果很好,但在实际手机上尝试它有时会循环,有时会卡在最后。我怀疑是赛车状态(实际上电影还没有完全完成时调用播放)。当我添加一个 NSTimer 来延迟调用 play 方法时,它确实循环了(但最后有一个小插曲),这不是最佳的。也许是因为 .mp4 文件的编解码器?
  • 最好使用:[self.movi​​ePlayer prepareToPlay];这有助于优化视频并消除任何不需要的渲染问题。
  • 不再适用于 iOS8+。间隙只要将 repeatMode 设置为 .One
【解决方案3】:

对于计时器,您可以创建一个具有滑块值的 Int 变量,然后使用 performSelector afterDelay:

int delayInt = 8; // Substitute the 8 for the value of your slider
[self performSelector:@selector(myMethod) withObject:nil afterDelay:delayInt];

然后在你的“myMethod”中

-(void) myMethod{
//the code to stop your player and remove view controller
}

【讨论】:

    猜你喜欢
    • 2015-08-27
    • 2012-11-29
    • 2013-10-10
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多