音频播放和视频播放

1、导入系统库和视频,如下图
音频播放和视频播放_第1张图片
2、在ViewController.m文件中

#import "ViewController.h"
//音频播放框架
#import <AVFoundation/AVFoundation.h>
//视频播放框架
#import <MediaPlayer/MediaPlayer.h>

@interface ViewController ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
{
    AVAudioPlayer *_player;//声明一个音频播放,通常音频播放对象都是为全局变量,如果局部声明,可能造成音频无法播放
    MPMoviePlayerController *movie;//(View的方式呈现)视频播放需要命名全局变量

    MPMoviePlayerViewController *moviewVC;//视图控制器的呈现

}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    //音频播放
    [self playerAudio];

    //视频播放
    [self playerMovie];

    //视频播放试图控制器
    [self playerMoviewController];

    //图片选择,弹出相册
    [self showImagePicker];

}


//*******************弹出相册******************************
-(void)showImagePicker
{
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    //弹出图片选择方式
// UIImagePickerControllerSourceTypePhotoLibrary //相册
// UIImagePickerControllerSourceTypeCamera //调用相机
// UIImagePickerControllerSourceTypeSavedPhotosAlbum //相薄

    imagePicker.delegate = self;
    [self presentViewController:imagePicker animated:YES completion:^{

    }];
}

//照片选择完成回调代理
//-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
//{
// 
//}


//选择图片回调,iOS 8以前的
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
    //选择图片完成回调的方法,会往回传递选择照片,或者摄像头拍摄的图片,但是这种方法只能传递一张图片
    UIImageView *view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    [view setImage:image];
    [self.view addSubview:view];

}
//**************************************************************


//********************播放器弹出方式*******************************
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self playerMoviewController];
    [self showImagePicker];
}
//**************************************************************


//***************视频播放试图控制器***************************
-(void)playerMoviewController
{
    //通过路径读取视频mp4
    NSString *path = [[NSBundle mainBundle] pathForResource:@"dzs" ofType:@"mp4"];
    NSURL *url = [NSURL fileURLWithPath:path];
    moviewVC = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
    [self presentViewController:moviewVC animated:YES completion:^{

    }];

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(moviePlayerFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
}

-(void)moviePlayerFinish:(NSNotification *)noti
{
    NSLog(@"视频播放完成");
}

//-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
//{
// [self playerMoviewController];
//}
//********************************************************************



//********************视频播放******************************
//(View的方式呈现)视频播放需要命名全局变量
-(void)playerMovie
{
// MPMoviePlayerController
// MPMoviePlayerViewController
    //视频播放两种方式,一种直接通过试图控制器弹出,一种直接用View方式呈现的
    //在iOS里面视频播放,支持mp4/MOV/AVI但是rmvb格式不支持
    //在ios里面视频播放可以直接播放,http远程视频
    //在iOS开发里面,特别是现在iOS 8以后开发一播放远程视频都是直接视频播放到,html页面上直接播放

    NSString *path = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"mp4"];

    movie = [[MPMoviePlayerController alloc] init];
    [movie setContentURL:[NSURL fileURLWithPath:path]];

    movie.view.frame = CGRectMake(10, 10, 352, 228);

    movie.movieSourceType = MPMovieSourceTypeFile;
    [self.view addSubview:movie.view];

    //视频准备播放
    [movie prepareToPlay];

    //视频开始播放
    [movie play];

}
//********************************************************************



//********************************************************************
//音乐播放
-(void)playerAudio
{
    //iOS里面多媒体 包括音频播放,视频播放,照片选择
    NSString *path = [[NSBundle mainBundle] pathForResource:@"lalala" ofType:@"mp3"];
    //创建音频播放器
    _player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil];
    //准备好播放
    [_player prepareToPlay];

    //播放
    [_player play];
    //暂停
    [_player pause];
    //停止
    [_player stop];

    //音频播放,音量设置
    _player.volume = 1.0;

    //创建定时器
    [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(playerrun) userInfo:nil repeats:YES];

}

-(void)playerrun
{
    //_player.currentTime
    //音频播放的当前时间
    //通常通过当前播放时间,和音频的总时间来计算歌曲的进度条
    //歌曲的歌词是lrc文件
    // 1、通常歌词显式也是通过着两个值计算
    // 2、lrc歌词自带时间
    NSLog(@"音频的当前时间%lf",_player.currentTime);
    NSLog(@"音频的总时间%lf",_player.duration);
}
//********************************************************************


//视图控制器是否支持旋转
-(BOOL)shouldAutorotate
{
    return  YES;
}

//视图控制器支持旋转的方向
-(NSUInteger)supportedInterfaceOrientations
{
// UIInterfaceOrientationPortrait
// UIInterfaceOrientationPortraitUpsideDown
// UIInterfaceOrientationMaskLandscape
// UIInterfaceOrientationLandscapeLeft
// UIInterfaceOrientationLandscapeRight
// UIInterfaceOrientationMaskAll

    return UIInterfaceOrientationPortrait | UIInterfaceOrientationLandscapeRight;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

你可能感兴趣的:(音频播放和视频播放)