【问题标题】:"initialPlaybackTime" of "MPMoviePlayerController" is not working“MPMoviePlayerController”的“initialPlaybackTime”不起作用
【发布时间】: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.
}

【问题讨论】:

  • 任何人的任何意见?
  • 谁能帮帮我?

标签: ios mpmovieplayercontroller mpmoviewcontroller


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多