1、首先要在项目中导入 MediaPlayer.framework 库
2、在使用的地方引入头文件 #import <MediaPlayer/MediaPlayer.h>
3、添加俩个代理方法:UINavigationControllerDelegate 和 UIImagePickerControllerDelegate
下面是我demo中的代码。
注意:只能用真机测试,如果是模拟器会崩溃,这里没有针对模拟器的情况作处理。
#import "ViewController.h"
#import <MediaPlayer/MediaPlayer.h>
@interface ViewController ()<UINavigationControllerDelegate,UIImagePickerControllerDelegate>
@property (strong,nonatomic) UIImageView *videosView;
@end
@implementation ViewController
//第一帧图片显示
-(UIImageView *)videosView
{
if (!_videosView) {
_videosView = [[UIImageViewalloc] initWithFrame:CGRectMake(20,20, [UIScreenmainScreen].bounds.size.width -40, [UIScreenmainScreen].bounds.size.width -40)];
_videosView.layer.masksToBounds =YES;
_videosView.layer.borderWidth =0.5;
_videosView.layer.borderColor = [UIColorgrayColor].CGColor;
}
return_videosView;
}
//选择视频
-(void)chooseVideos
{
UIImagePickerController *picker = [[UIImagePickerControlleralloc] init];
picker.sourceType =UIImagePickerControllerSourceTypePhotoLibrary;
picker.mediaTypes = [UIImagePickerControlleravailableMediaTypesForSourceType:picker.sourceType];
picker.delegate = self;
picker.allowsEditing = YES;
[selfpresentViewController:picker animated:YEScompletion:nil];
}
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self.viewaddSubview:self.videosView];
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[selfchooseVideos];
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
[picker dismissViewControllerAnimated:YEScompletion:nil];
// NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
NSURL *videoURL = [infoobjectForKey:UIImagePickerControllerMediaURL];
//将视频转换成为二进制数据形式,然后可进行上传
// NSData *videoData = [NSData dataWithContentsOfURL:videoURL];
NSLog(@"%@",videoURL);
MPMoviePlayerController *play = [[MPMoviePlayerControlleralloc] initWithContentURL:videoURL];
//iOS 3.2 - 7.0的方法
UIImage *thumbnail_image = [playthumbnailImageAtTime:1.0timeOption:MPMovieTimeOptionNearestKeyFrame];
// UIImage *thumbnail_image = [play requestThumbnailImagesAtTimes:[NSArray arrayWithObject:[NSNumber numberWithInteger:1.0]] timeOption:MPMovieTimeOptionNearestKeyFrame];
#if 0
//ios 7.0 之后的方法,这个地方我没用测试,因为我通知是一个短板,我以后进行完善
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleThumbnailImageRequestFinishNotification:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:play];
[play requestThumbnailImagesAtTimes:@[@1] timeOption:MPMovieTimeOptionNearestKeyFrame];
#endif
self.videosView.image = thumbnail_image;
}
-(void)handleThumbnailImageRequestFinishNotification:(NSNotification*)notification
{
NSDictionary *userinfo = [notification userInfo];
NSError* value = [userinfoobjectForKey:MPMoviePlayerThumbnailErrorKey];
if (value != nil)
{
NSLog(@"Error creating video thumbnail image. Details: %@", [valuedebugDescription]);
}
else
{
UIImage *thumbnail = [userinfovalueForKey:MPMoviePlayerThumbnailImageKey];
}
}