1

我正在尝试使用 MPMovieplayercontroller 播放电影。除了“ initialPlaybackTime ”之外,一切都很好。玩家不是从给定的秒数开始播放,而是从头开始播放。

如何使“initialPlaybackTime”工作?

-(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.
}
4

2 回答 2

0

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

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

于 2014-08-07T16:51:31.317 回答
0

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

目前我发现了一个仍然不完整的解决方法,因为您仍然无法设置视频的结束时间。这个解决方案如何让您设置“initialPlaybackTime”

首先将观察者添加到您的 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;
}
于 2015-09-20T10:34:31.937 回答