// CameraViewController.h
@interface CameraViewController:UIViewController {
UIImagePickerController *_picker;
}
@property(强,非原子)IBOutlet UIImageView * imageView;
@property(nonatomic,retain)MPMoviePlayerController * player;
// CameraViewController.m
@interface CameraViewController()
@property(强,非原子)MPMoviePlayerController * playView;
@end
@implementation CameraViewController
@synthesize imageView = _imageView;
@synthesize player = _player;
@synthesize playView = _playView;
{
[super viewDidLoad];
_picker = [[UIImagePickerController alloc] init];
}
{
[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];
}
(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];
}
(void)movieFinishedCallback:(NSNotification *)通知{
MPMoviePlayerViewController * player = [通知对象];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:player];
[player.view removeFromSuperview];
}
将立即调用movieFinishedCallback:方法,因此视频无法完全播放。
如何解决?
答案 0 :(得分:0)
Apple建议:
使用AVPlayer播放iPod库,相机胶卷或iTunes文件共享中的视频。