0

我正在制作一个视频,以视频的特定间隔显示叠加层。我设法让视频播放。现在我的目标是观看/观察 currentPlaybackTime 值并在视频达到 2 秒时暂停视频。

经过一番研究发现currentPlaybackTime不支持KOV。所以我需要实现这个解决方案,但我不知道把代码放在哪里——我对 Objective C 很陌生。我一直试图把它放在 ViewController(我唯一的视图)中,但它的书面提示方式是放在别的地方……

我应该为它创建一个新的控制器吗?还是我要覆盖 MediaPlayer 框架中的方法?

这是我的代码:

#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>

@interface ViewController : UIViewController

@property (strong, nonatomic) MPMoviePlayerController *movieController;

@property(nonatomic) NSTimeInterval currentPlaybackTime;

@end



#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


- (void)viewDidAppear:(BOOL)animated {

    self.movieController = [[MPMoviePlayerController alloc] init];


    NSString *moviePath = [[NSBundle mainBundle] pathForResource:@"Movie" ofType:@"m4v"];
    NSURL *movieURL = [NSURL fileURLWithPath:moviePath];
    self.movieController = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];

    [self.movieController.view setFrame:CGRectMake (0, 0, 480, 326)];
    [self.view addSubview:self.movieController.view];


    [self.movieController play];
    [self.movieController currentPlaybackTime];




}



@end
4

1 回答 1

2

您可以在同一个视图控制器中找到的解决方案中实现以下方法。

紧接着

[self.movieController play];

调用以下方法

[self BeginPlayerPolling];

在您初始化movieController的viewDidAppear之前将此类注册为观察者

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(movieFinishedCallback:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification
                                           object: self.movieController];
self.movieController = [[MPMoviePlayerController alloc] init];

并实现这个通知观察者的方法

- (void)movieFinishedCallback:(NSNotification*)aNotification
{
    // Remove the movie player view controller from the "playback did finish" notification observers
    [[NSNotificationCenter defaultCenter] removeObserver: self
                                                name:MPMoviePlayerPlaybackDidFinishNotification
                                              object: self.movieController];
    [self EndPlayerPolling];
}
于 2013-12-27T22:21:03.983 回答