使用MPMoviePlayerViewController播放视频--

自己之前做的那个实在太卡,没有缓冲没有线程,于是乎就打算修改一下。

结合performselect使用线程感觉还是不错的。

 

 

头文件,

里面主要是一个标志位,一个MPMoviePlayerViewController。

//
//  PlayVideoViewController .h
//
//  Created by Leung Kinglok on 11-6-23.
//  Copyright 2011年 scnu. All rights reserved.
//

#import <UIKit/UIKit.h>

@class MPMoviePlayerViewController;
@interface PlayVideoViewController : UIViewController {
    MPMoviePlayerViewController *_moviePlayerController;  
    UIActivityIndicatorView *_activityIndicatorView;
    BOOL _isExit;
}

@property (nonatomic , retain) MPMoviePlayerViewController *moviePlayerController;
@property (nonatomic , retain) IBOutlet UIActivityIndicatorView *activityIndicatorView;

-(void)initWight;
-(IBAction)back;
@end

 

 

 

=====================================================================

====================部分实现文件==========================================

=====================================================================

=====================================================================

 

 


#import <MediaPlayer/MediaPlayer.h>

@implementation PlayVideoViewController 

@synthesize moviePlayerController=_moviePlayerController;
@synthesize activityIndicatorView =_activityIndicatorView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self initWight];
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(didRotate)
                                                 name:@"UIDeviceOrientationDidChangeNotification" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(moviePlayBackDidFinish:) 
                                                 name:MPMoviePlayerPlaybackDidFinishNotification 
                                               object:nil];
    
}


-(void)backOnMainThread
{
    self.navigationController.navigationBar.hidden=NO;
    [self.navigationController popViewControllerAnimated:NO];
    [self canPerformAction:@selector(loadingVideo) withSender:nil];
    if (_moviePlayerController!=nil) 
    {
        [_moviePlayerController.moviePlayer stop];
    }

}

-(IBAction)back
{
    if ([NSThread isMainThread]) {
        [self performSelectorOnMainThread:@selector(backOnMainThread) withObject:nil waitUntilDone:NO];
    }
    _isExit=YES;
}


-(void)initWight
{
    [_activityIndicatorView startAnimating];
    _isExit=NO;
    self.navigationController.navigationBar.hidden=YES;
    if(_moviePlayerController!=nil)
    {
        NSLog(@"%d",[_moviePlayerController retainCount]);
        [_moviePlayerController release];
    }

    NSString *fileName = @"http://media1.gdou.com/test/011.mp4";
    
    NSURL *fileURL=[NSURL URLWithString:fileName]; 
    _moviePlayerController = [[MPMoviePlayerViewController alloc]
                              initWithContentURL:fileURL];
    
    [self performSelectorInBackground:@selector(loadingVideo) withObject:nil];
    
}

-(void)loadingVideo
{

    while (!(_moviePlayerController.moviePlayer.loadState==MPMovieLoadStatePlayable)) 
    {
        NSLog(@"loading");
        if (_isExit) 
        {
        [self performSelectorOnMainThread:@selector(backOnMainThread) withObject:nil waitUntilDone:NO];
            break;
        }
    }
    
    if (!_isExit) {
        [self performSelectorOnMainThread:@selector(playVideoOnMainThread) withObject:nil waitUntilDone:NO];
    }

}

-(void)playVideoOnMainThread
{
    [_activityIndicatorView stopAnimating];
    
    [self.view addSubview:_moviePlayerController.view];
    //[self presentMoviePlayerViewControllerAnimated:_moviePlayerController]; 
    
    [_moviePlayerController.moviePlayer play]; 
    [_moviePlayerController setWantsFullScreenLayout:YES];
    
}


-(void)moviePlayBackDidFinish:(NSNotification*)notification
{
    [[NSNotificationCenter     defaultCenter] 
     removeObserver:self
     name:MPMoviePlayerPlaybackDidFinishNotification
     object:nil];

    self.navigationController.navigationBar.hidden=NO;
    [_moviePlayerController setWantsFullScreenLayout:NO];
    [self.view removeFromSuperview];
    [self.navigationController popViewControllerAnimated:YES];
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值