MPMoviePlayerController加载来自Photo库的视频,播放速度非常快

时间:2013-07-31 12:43:40

标签: ios6 mpmovieplayercontroller

// CameraViewController.h

@interface CameraViewController:UIViewController {

UIImagePickerController *_picker;

}

@property(强,非原子)IBOutlet UIImageView * imageView;

@property(nonatomic,retain)MPMoviePlayerController * player;

  • (IBAction)loadImage:(UIButton *)sender;

// CameraViewController.m

@interface CameraViewController()

@property(强,非原子)MPMoviePlayerController * playView;

@end

@implementation CameraViewController

@synthesize imageView = _imageView;

@synthesize player = _player;

@synthesize playView = _playView;

  • (无效)viewDidLoad中

{

[super viewDidLoad];

_picker = [[UIImagePickerController alloc] init];

}

  • (无效)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

  • (IBAction)loadImage:(UIButton *)sender {

    _picker.delegate = self;

    _picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    NSArray * mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeImage,(NSString *)kUTTypeMovie,nil];

    _picker.mediaTypes = mediaTypes;

    [self presentViewController:_picker animated:YES completion:NULL];

}

pragma mark -ImagePicker Delegate

  • (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    UIImage * image = nil;

    NSURL * imageURL = nil;

    imageURL = [info valueForKey:UIImagePickerControllerMediaURL];

    if(imageURL == nil){

    image = [info valueForKey:UIImagePickerControllerEditedImage];
    
    if (image == nil) {
    
        image = [info valueForKey:UIImagePickerControllerOriginalImage];
    
        _imageView.image = image;
    
    }
    
    else {
    
    }
    

    }

    其他{

    self.player = [[MPMoviePlayerController alloc] initWithContentURL:imageURL];

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.player];
    
        self.player.view.frame = CGRectMake(10.0, 10.0, 200.0, 200.0);
    
        self.player.view.backgroundColor = [UIColor clearColor];
    
        self.player.movieSourceType = MPMovieSourceTypeFile;
    
        [self.player prepareToPlay];
    
        [self.view addSubview:self.player.view];
    
        [self.player play];
    

    }

    [picker dismissViewControllerAnimated:YES completion:NULL];

}

  • (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

    [picker dismissViewControllerAnimated:YES completion:NULL];

}

pragma mark - 用户定义

  • (void)movieFinishedCallback:(NSNotification *)通知{

    MPMoviePlayerViewController * player = [通知对象];

    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:player];

    [player.view removeFromSuperview];

}

将立即调用movieFinishedCallback:方法,因此视频无法完全播放。

如何解决?

1 个答案:

答案 0 :(得分:0)

Apple建议:

使用AVPlayer播放iPod库,相机胶卷或iTunes文件共享中的视频。

相关问题