如何在iOS6中播放视频

3
我对以下内容感到困惑:
MPMoviePlayerViewController和MPMoviePlayerController 在iOS6中本地播放视频的最佳方法是什么?
这是我的代码:
NSURL * url = [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: @ "17" OfType: @ "mov"]];

     MoviePlayer = [[MPMoviePlayerViewController alloc]
                     initWithContentURL: url];
     [self presentMoviePlayerViewControllerAnimated: MoviePlayer];
     [moviePlayer.moviePlayer play];
     [[NSNotificationCenter defaultCenter] addObserver: self selector: @ selector (moviePlayerPlaybackStateChanged :) name: MPMoviePlayerPlaybackStateDidChangeNotification object: nil];
}


-(void)moviePlayerPlaybackStateChanged:(NSNotification *)notification {


}
1个回答

8

MPMoviePlayerViewController用于播放全屏视频,主要在手机上使用。

MPMoviePlayerController可用于嵌入式视频,即在任何iPad上都不是全屏的。您需要在storyboard中将一个空视图拖到场景中,并给它所需的大小。然后,在代码中,将movieplayer放置在该子视图中。您的代码的第一部分应该在viewDidLoad中。

//movieplayer initialization
NSString *path = [[NSBundle mainBundle] pathForResource:@"videoName" ofType:@"m4v"];
NSURL *videoURL = [NSURL fileURLWithPath:path];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
[moviePlayer setControlStyle:MPMovieControlStyleNone]; // for custom controls, for default controls you can leave this line out.

这部分代码应该放在viewWillAppear方法中;

moviePlayer.repeatMode = MPMovieRepeatModeOne; // for looping
[moviePlayer.view setFrame: self.videoSuper.bounds]; 
[self.videoSuper addSubview: moviePlayer.view];
[moviePlayer prepareToPlay];
[moviePlayer play];

其中videoSuper是在Storyboard中添加的子视图。请确保正确连接;

//in .h
@property (weak, nonatomic) IBOutlet UIView *videoSuper;

我尝试过这样做,但由于某些原因它对我不起作用。我创建了一个单视图项目,带有xib但没有storyboard。添加了一个UIView并将其连接到文件所有者。我只看到一个白屏,没有音频。有什么帮助或建议可以告诉我我可能做错了什么吗?今天是否有更好的运行视频的方法我不知道吗? - vnchopra
你给连接到视图的插座命名了吗?我在了解命名约定之前就写了这个。我所称之为videoSuper应该被称为videoView或类似的名称,并且它应该是您h文件中的IBOutlet,与您的NIB中的视图连接起来。(我使用故事板,所以细节由您决定。)在故事板中,您可以右键单击故事板中的视图,然后将其拖动到声明属性的头文件中,弹出窗口将让您有机会对其进行命名。将其命名为videoView,然后您的控制器将具有一个可在代码中引用的属性。 - timquinn
[self.videoView addSubview: moviePlayer.view]; [self.videoView addSubview: moviePlayer.view]; - timquinn
@property (weak, nonatomic) IBOutlet UIView *videoView; - timquinn
为什么要使用videoSuper?难道不能直接将moviePlayer的视图添加到self.view中吗? - N8allan
videoSuper的目的是在StoryBoard中拥有视频的表示,以便设计和方便。 - timquinn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接