代码之家  ›  专栏  ›  技术社区  ›  mxg

mpmovieplayercontroller第二次播放视频

  •  3
  • mxg  · 技术社区  · 15 年前

    我需要有可能在一个应用程序中播放多个视频。

    不幸的是,我第二次按“播放”时,视频似乎在闪烁。

    我只使用这个代码来播放视频

    nsurl*url=[[[nsurl alloc]initfileurlwithpath:[[nsbundle mainbundle]pathforresource:@“movie”of type:@“m4v”]autorelease];

    mpmovieplayercontroller*mp=[[mpmovieplayercontroller alloc]initwitcontenturl:url];

    mp.moviecontrolmode=mpmoviecontrolmodefault;

    [ MP游戏];

    电影播放器=MP;

    [MP释放];

    有人能告诉我哪里有问题吗? 事先谢谢!

    更新1: 好像苹果 MoviePlayer 这个例子也有同样的问题。

    4 回复  |  直到 12 年前
        1
  •  4
  •   Nareshkumar    15 年前

    您也可以在调用播放功能之前,将初始播放时间设置为-1.0。

    mp.initialPlaybackTime = -1.0;
    

    在调用您的play方法之前输入此代码。

        2
  •  1
  •   Ken Pespisa    15 年前

    我遇到了这个问题,通过在mpmovieplayercontroller完成播放后使用通知系统执行回调,并在那里释放player对象,解决了这个问题。

    播放电影前添加通知:

    NSURL *url = [[[NSURL alloc]initFileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Movie" ofType:@"m4v"]] autorelease];
    
    MPMoviePlayerController *mp = [[MPMoviePlayerController alloc]initWithContentURL:url];
    
    mp.movieControlMode = MPMovieControlModeDefault;
    
    //***Add this line***
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:mp];
    
    [mp play];
    

    然后添加回调方法,

    -(void)myMovieFinished:(NSNotification*)aNotification
    {
        MPMoviePlayerController *moviePlayer = [aNotification object];
        [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerDidFinishNotification object:moviePlayer];
        [moviePlayer release];
    }
    
        3
  •  0
  •   mxg    15 年前

    唯一的解决办法是…为3.1制作应用程序

        4
  •  0
  •   new soul    15 年前

    我也发现在OS 3.1或更高版本的模拟器上运行可以很好地播放。它不会闪烁。但是当我添加

    initialPlaybackTime = -1.0
    

    它在OS 3.0上也能发挥很好的作用。