在OSX中播放视频

时间:2014-09-04 09:18:23

标签: objective-c macos video xcode5.1

我正在开发一款需要在应用中播放教程视频的mac应用。 当用户按下应用程序上的按钮时,它应该播放视频 这是xcode 4.3的代码(与xcode 5.1不兼容)

@synthesize movieView;
-(IBAction)playVideo:(id)sender {
NSString *videoPath = [[NSBundle mainBundle] pathForResource:"video name" ofType:@"mp4";
NSURL *videoURL = [NSURL fileURLWithPath: videoPath];
NSError *error = nil;

NSDictionary *attrib = [NSDictionary dictionaryWithObjectsAndKeys:
                       [NSNumber  numberWithBool:YES],
                        QTMovieOpenForPlaybackAttribute,
                        videoURL, QTMovieURLAttribute,
                        [NSNumber numberWithBool:YES],
                        QTMovieOpenAsyncRequiredAttribute, nil];
QTMovie *newMovie = [[QTMovie alloc] initWithAttributes: attrib error: &error];
[movieView setMovie:newMovie];
[movieView play:newMovie];

}

我正在使用xcode 5.1 for osx 10.8

2 个答案:

答案 0 :(得分:5)

从OS X 10.7开始,Apple开始从QuickTime API(包括QTKit)过渡到AVFoundation。关于这种转变有一个detailed technical note

在现代Mac应用中播放视频的最简单方法是通过AVKit(自10.9开始提供) 要获得显示与您的应用捆绑在一起的视频的基本视图,您必须:

  1. 添加AVKit& AVFoundation到"链接的框架和库"项目部分
  2. AVPlayerView拖到Interface Builder
  3. 中的窗口
  4. 将插座连接到其中一个控制器中的播放器视图
  5. 实例化从您的软件包加载视频资源的AVPlayer
  6. 这是加载资产的代码:

    NSURL* videoURL = [[NSBundle mainBundle] URLForResource:@"video name" withExtension:@"mp4"];
    self.playerView.player = [AVPlayer playerWithURL:videoURL];
    

答案 1 :(得分:0)

Thomas在Swift 5中回答

if let videoURL = Bundle.main.url(forResource: "video",
                                  withExtension: "mp4") {
  self.playerView.player = AVPlayer.init(url: videoURL)
  self.playerView.player?.play()
}