“MPMoviePlayerController”的“initialPlaybackTime”不起作用

Posted

技术标签:

【中文标题】“MPMoviePlayerController”的“initialPlaybackTime”不起作用【英文标题】:"initialPlaybackTime" of "MPMoviePlayerController" is not working 【发布时间】:2014-08-07 16:02:46 【问题描述】:

我正在尝试使用 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.

【问题讨论】:

任何人的任何意见? 谁能帮帮我? 【参考方案1】:

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

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

【讨论】:

感谢您的评论。是的,但无论我为“initialPlaybackTime”设置的值如何,它总是以“零时间”开始。 VOD 与播放静态 MP4 视频文件有什么关系?【参考方案2】:

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;

【讨论】:

以上是关于“MPMoviePlayerController”的“initialPlaybackTime”不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何显示 MPMoviePlayerController 控件?

MPMoviePlayerController 隐藏 AirPlay 按钮

MPMoviePlayerController 上的专辑封面

MPMoviePlayerController 已弃用,现在怎么办?

用 MPMoviePlayerController 替换 AVPlayer

“MPMoviePlayerController”的“initialPlaybackTime”不起作用