Ios “MPMoviePlayerController”的“初始播放时间”不工作

Ios “MPMoviePlayerController”的“初始播放时间”不工作,ios,mpmovieplayercontroller,mpmoviewcontroller,Ios,Mpmovieplayercontroller,Mpmoviewcontroller,我正在尝试用MPMovieplayercontroller播放一部电影。除了最初的播放时间,一切都很好。玩家不是从给定的秒开始玩,而是从开始玩 如何让初始播放时间开始工作 -(void)viewDidLoad { [super viewDidLoad]; NSString *moviePath= [[NSBundle mainBundle] pathForResource:@"02_Skater" ofType:@"mp4"]; NSURL *url = [NSURL f

我正在尝试用MPMovieplayercontroller播放一部电影。除了最初的播放时间,一切都很好。玩家不是从给定的秒开始玩,而是从开始玩

如何让初始播放时间开始工作

-(void)viewDidLoad
{
    [super viewDidLoad];
    NSString *moviePath= [[NSBundle mainBundle] pathForResource:@"02_Skater" ofType:@"mp4"];
    NSURL *url = [NSURL fileURLWithPath:moviePath] ;
    // video player
    playerViewController = [[MPMoviePlayerController alloc] init];
    playerViewController.contentURL = url;
    playerViewController.view.frame = CGRectMake(0, 200, 300, 300);

    playerViewController.scalingMode = MPMovieScalingModeAspectFit;
    playerViewController.initialPlaybackTime = 3;
    playerViewController.endPlaybackTime = 4;
    playerViewController.controlStyle=MPMovieControlStyleNone;
    [playerViewController prepareToPlay];


    [playerViewController play];
    [[self view] addSubview: [playerViewController view]];

    // Do any additional setup after loading the view, typically from a nib.
}

如果您查看Apple文档,您可以阅读:


对于视频点播内容,播放从距离提供时间最近的段边界开始。

iOS 8.4之后的新更新存在这些问题,并且这些错误在新的iOS 9.0中仍然存在

目前,我已经找到了一个解决方案,它仍然不完整,因为您仍然无法设置视频的结束时间。此解决方案如何帮助您设置初始播放时间

首先在mediaPLayer中添加一个观察者

//Add Observer
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(moviePlayerPlaybackStateChanged:)
                                                 name:MPMoviePlayerPlaybackStateDidChangeNotification
                                               object:mediaPlayerController];
并编写此通知方法

BOOL playbackDurationSet=NO;
-(void)moviePlayerPlaybackStateChanged:(NSNotification*)notification{
    MPMoviePlayerController* player = (MPMoviePlayerController*)notification.object;

    switch ( player.playbackState ) {
        case MPMoviePlaybackStatePlaying:

            if(!playbackDurationSet){
                [mediaPlayerController setCurrentPlaybackTime:player.initialPlaybackTime];
                playbackDurationSet=YES;
            }
            break;

         default:
            break;
    }
}

-(void)resetPlayerDurationVar{
    playbackDurationSet=NO;
}

谢谢你的评论。是的,但无论我为initialPlaybackTime设置了什么值,它总是从零开始。VOD与播放静态MP4视频文件有什么关系?任何人的输入吗?有人能帮我吗?