读书频道 > 网站 > 网页设计 > iOS 5编程入门经典(第3版)——开发iPhone与iPad应用
13.4 在iPhone中播放视频
12-11-08    奋斗的小年轻
收藏    我要投稿   
本书面向iPhone和iPad开发初学者,涵盖了iOS开发的各个主题。本书的编写方式是渐进式的,这样读者就不会由于细节过多而疲于奔命。我认为最好的学习方式就是去实践,因此全书大量的试一试首先会介绍如何构建某个应...立即去当当网订购

视频播放是iPhone 中最常见的任务之一。在iOS 4 以前,所有的视频都必须全屏播放,但是iOS 4 放松了限制,允许在iPhone 应用程序中嵌入视频。这样一来,就可以在任何View 窗口中嵌入多个视频。本节就介绍如何在iPhone应用程序中启用视频播放。

 试一试  启用视频播放

代码文件PlayVideo.zip可从Wrox.com下载

 代码文件PlayVideo.zip可从Wrox.com下载

(1) 使用Xcode 创建一个新的Single View Application(iPhone) 项目,命名为PlayVideo 。使用项目名称作为Class Prefix,并取消选中Use Automatic Reference Counting选项。

(2) 将示例视频拖放到Xcode 项目的Supporting Files文件夹中,如图13-11 所示。


 

(3) 在Xcode中双击项目名称,然后选择PlayVideo目标。在右侧选择Build Phases选项卡,并展开Link Binary With Libraries (3 items)节。单击“+”按钮,如图13-12所示。


 

(4) 选择MediaPlayer.framework,将其添加到项目中,如图13-13所示。


 

(5) 在PlayVideoViewController.h文件中添加如下粗体代码:
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>

@interface PlayVideoViewController : UIViewController
{
    MPMoviePlayerController *player;
}

@end

(6) 在PlayVideoViewController.m文件中编写如下粗体代码:
#import "“PlayVideoViewController.h"”

@implementation PlayVideoViewController

- (void)viewDidLoad {
    NSString *url = [[NSBundle mainBundle] pathForResource:@"”Trailer"”
                                                            ofType:@"”m4v"”];

    player = [[MPMoviePlayerController alloc]
                 initWithContentURL:[NSURL fileURLWithPath:url]];

    [[NSNotificationCenter defaultCenter]
         addObserver:self
             selector:@selector(movieFinishedCallback:)
                name:MPMoviePlayerPlaybackDidFinishNotification
               object:player];

    //---set the size of the movie view and then add it to the View window---
    player.view.frame = CGRectMake(10, 10, 300, 300);   
    [self.view addSubview:player.view];

    //---play movie---
    [player play];
    [super viewDidLoad];
}

//---called when the movie is done playing---
- (void) movieFinishedCallback:(NSNotification*) aNotification {
    MPMoviePlayerController *moviePlayer = [aNotification object];
    [[NSNotificationCenter defaultCenter]
        removeObserver :self
                    name:MPMoviePlayerPlaybackDidFinishNotification
                object:moviePlayer];  
    [moviePlayer.view removeFromSuperview];
    [player release];
}

(7) 按Command+R 组合键,在iPhone Simulator 中测试应用程序,结果如图13-14所示。

(8) 单击电影就可以全屏播放。图13-15显示了同一个电影的两种播放效果,右图的中播放的电影占据了整个屏幕。


 

示例说明

基本上是使用MPMoviePlayerController类来控制视频的播放:
    player = [[MPMoviePlayerController alloc]
                 initWithContentURL:[NSURL fileURLWithPath:url]];

然后使用NSNotificationCenter类来注册通知,这样在电影完成播放后,就会调用“movieFinishedCallback:”方法:
    [[NSNotificationCenter defaultCenter]
         addObserver:self
             selector:@selector(movieFinishedCallback:)
                name:MPMoviePlayerPlaybackDidFinishNotification
                 object:player];

为了在View 窗口中显示电影,需要设置电影的大小,然后将它的view 属性添加到View 窗口中并播放电影:
    //—set the size of the movie view and then add it to the View window—
    player.view.frame = CGRectMake(10, 10, 300, 300);
    [self.view addSubview:player.view];
   
    //—play movie—
    [player play];

当电影停止播放后,应该取消通知、删除电影并释放player 对象:
//—called when the movie is done playing—
- (void) movieFinishedCallback:(NSNotification*) aNotification {
    MPMoviePlayerController *moviePlayer = [aNotification object];
    [[NSNotificationCenter defaultCenter]
        removeObserver :self
                    name :MPMoviePlayerPlaybackDidFinishNotification
                  object :moviePlayer];  
    [moviePlayer.view removeFromSuperview];
    [player release];
}

MPMoviePlayerController类可以播放iOS支持的任何电影或音频文件(其内容可以是长度固定的,也可以是流式的)。iOS支持的典型文件扩展名包括:.mov、.mp4、mpv和.3GP。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站