播放器 9.0之前的视屏播放 AVFoundation音乐播放 AudioToolbox音效播放

//
//  ViewController.m
//  AVFoundation音乐播放
//
//  Created by DC020 on 15/12/28.
//  Copyright (c) 2015年 Bill. All rights reserved.
//

#import "ViewController.h"
//引入音乐播放框架
#import <AVFoundation/AVFoundation.h>

@interface ViewController ()<AVAudioPlayerDelegate>{
    NSDictionary *dict;
    NSArray *arrName;
    NSArray *arrType;
    NSTimer *timer;
    BOOL choose;
    int i;
    int SecEnd;
    int SecBe;
    int minEnd;
    int minBe;
}



@property(nonatomic,strong)AVAudioPlayer *audioPlayer;//音乐播放器

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    i = 0;
    choose = YES;
    _slider.transform = CGAffineTransformMakeRotation(1.57079633);
    [_buttonPause addTarget:self action:@selector(pause) forControlEvents:UIControlEventTouchUpInside];
    [_buttonLeft addTarget:self action:@selector(left) forControlEvents:UIControlEventTouchUpInside];
    [_buttonRight addTarget:self action:@selector(right) forControlEvents:UIControlEventTouchUpInside];
    arrName = @[@"葫芦娃",@"邓紫棋 - 单行的轨道",@"demo3",@"demo6",@"jazz",@"demo2"];
    arrType = @[@"mp3",@"m4a",@"mp3",@"mp3",@"mp3",@"mp3"];
    _label.text = arrName[i];
    _imageView.image = [UIImage imageNamed:@"1"];
    _imageView.layer.cornerRadius = 300/2;
    _imageView.layer.masksToBounds = YES;
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(progress)  userInfo:nil repeats:YES];
    [_slider addTarget:self action:@selector(value) forControlEvents:UIControlEventValueChanged];
    [self.audioPlayer play];//若是等于_audioPlayer就是set,这是get
}
-(void)value{
    _audioPlayer.volume = _slider.value;
}
#pragma mark audioPlayer属性的get方法
-(AVAudioPlayer *)audioPlayer
{
    if (!_audioPlayer) {
        NSLog(@"播放器准备启动,开始实例化");
        //1.获取音乐文件路径
        NSString *urlStr = [[NSBundle mainBundle]pathForResource:arrName[0] ofType:arrType[0]];
        NSURL *url = [NSURL fileURLWithPath:urlStr];//获取本地音乐url,只能播放本地
        //2.初始化播放器
        NSError *error;
        _audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];
        //设置播放器属性
        _audioPlayer.numberOfLoops = 0;//0为不循环,负数为无限循环
        _audioPlayer.volume = 0.1;//音量范围0-1
        NSLog(@"%f",_audioPlayer.duration);
        
        [_audioPlayer prepareToPlay];//加载音频文件到缓存
        _audioPlayer.delegate = self;
        
        NSLog(@"%f",_audioPlayer.currentTime);
        ;
        SecBe =(int)_audioPlayer.currentTime%60;
       
        SecEnd = (int)_audioPlayer.duration % 60;
        _labelBegin.text = [NSString stringWithFormat:@"%.2f:%.2d",_audioPlayer.currentTime/60,SecBe];
        _labelEnd.text = [NSString stringWithFormat:@"%.2f:%.2d", _audioPlayer.duration/60,SecEnd];
    }
    
    return _audioPlayer;
}



-(void)initData:(int)num{
    
    NSString *str = [[NSBundle mainBundle]pathForResource:arrName[num] ofType:arrType[num]];
    NSURL *url = [NSURL fileURLWithPath:str];
    NSError *error;
    _audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];
    
     _audioPlayer.numberOfLoops = 0;
    _audioPlayer.volume = 0.1;
    [_audioPlayer play];
    
    
    _label.text = arrName[num];
    _imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d",num+1]];
    _imageView.layer.cornerRadius = 300/2;
    _imageView.layer.masksToBounds = YES;
    _labelBegin.text = [NSString stringWithFormat:@"%.2f",_audioPlayer.currentTime];
    _labelEnd.text = [NSString stringWithFormat:@"%.2f",_audioPlayer.duration];
    
    SecBe =(int)_audioPlayer.currentTime%60;
    
    SecEnd = (int)_audioPlayer.duration % 60;
    _labelBegin.text = [NSString stringWithFormat:@"%.2f:%.2d",_audioPlayer.currentTime/60,SecBe];
    _labelEnd.text = [NSString stringWithFormat:@"%.2f:%.2d", _audioPlayer.duration/60,SecEnd];
}


-(void)progress{
    _progressView.progress = _audioPlayer.currentTime/_audioPlayer.duration;
    _labelBegin.text = [NSString stringWithFormat:@"%.2f",_audioPlayer.currentTime];
    [self turnAround];
}


-(void)turnAround{
//    CGAffineTransformMakeRotation这个方法是根据原始图形的transform来转变的
//    CGAffineTransformRotate是根据前一次的状态来改变
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:2.0f];
    _imageView.transform =CGAffineTransformRotate(_imageView.transform, M_PI_4);
    [UIView commitAnimations];
}


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



#pragma mark 播放器代理方法-播放结束时
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
    if (i <arrName.count-1) {
        i++;
    }
    else{
        i = 0;
    }
    _audioPlayer = nil;
    [self initData:i];
    
    
    
}

-(void)pause{
    if (choose) {
         [self.audioPlayer pause];
        choose = NO;
        timer.fireDate = [NSDate distantFuture];//定时器暂停
    }
    else{
        [self.audioPlayer play];
        choose = YES;
        timer.fireDate = [NSDate distantPast];//开始
    }
   
}

-(void)left{
    if (i >0) {
        i--;
    }
    else{
        i = (int)arrName.count-1;
    }
     NSLog(@"%d",i);
    [self initData:i];
}

-(void)right{
    if (i <arrName.count-1) {
        i++;
    }
    else{
        i = 0;
    }
    NSLog(@"%d",i);
    [self initData:i];
}
@end

缓存



//
//  ViewController.m
//  9.0之前的视屏播放
//
//  Created by DC020 on 15/12/28.
//  Copyright (c) 2015年 Bill. All rights reserved.
//

#import "ViewController.h"
//引入头文件
#import <MediaPlayer/MediaPlayer.h>
@interface ViewController ()
@property(nonatomic,strong)MPMoviePlayerController *moviePlayer;//视频播放控制器
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.moviePlayer play];
    
    //添加通知
    [self addNotatification];
}
-(void)addNotatification{
    //建立通知中心
    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
    //播放状态改变的通知
    [notificationCenter addObserver:self selector:@selector(stateChange:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:self.moviePlayer];
    //播放完成的通知
    [notificationCenter addObserver:self selector:@selector(finishPlaying:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayer];
}
-(void)dealloc{
    //移除全部self里的通知监控
    [[NSNotificationCenter defaultCenter]removeObserver:self];
}
-(void)finishPlaying:(NSNotification *)notification{
    NSLog(@"播放结束!!!!");
}

-(void)stateChange:(NSNotification*)notification{
    //判断播放状态
    switch (self.moviePlayer.playbackState) {
        case MPMoviePlaybackStatePlaying:
            NSLog(@"正在播放...");
            break;
        case MPMoviePlaybackStatePaused:
            NSLog(@"暂停播放...");
            break;
        case MPMoviePlaybackStateStopped:
            NSLog(@"中止播放...");
            break;
        default:
            NSLog(@"播放状态为:%li",self.moviePlayer.playbackState);
            break;
    }
}

#pragma mark 建立视频播放控制器
-(MPMoviePlayerController *)moviePlayer{
    if (!_moviePlayer) {
        //1.获取视频地址(能够本地,也能够网络)
        NSString *urlStr = [[NSBundle mainBundle]pathForResource:@"0" ofType:@"mp4"];
        NSURL *url = [NSURL fileURLWithPath:urlStr];
        //2.初始化播放控制器
        _moviePlayer = [[MPMoviePlayerController alloc]initWithContentURL:url];
        _moviePlayer.view.frame = self.view.frame;
        //播放器视图->自适应屏幕宽高
        _moviePlayer.view.autoresizingMask =UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
        [self.view addSubview:_moviePlayer.view];
    }
    return _moviePlayer;
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

网络




//
//  ViewController.m
//  AVFoundation音乐播放
//
//  Created by DC020 on 15/12/28.
//  Copyright (c) 2015年 Bill. All rights reserved.
//

#import "ViewController.h"
//引入音乐播放框架
#import <AVFoundation/AVFoundation.h>

@interface ViewController ()<AVAudioPlayerDelegate>



@property(nonatomic,strong)AVAudioPlayer *audioPlayer;//音乐播放器

@end

@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    [self.audioPlayer play];//若是等于_audioPlayer就是set,这是get
}
#pragma mark audioPlayer属性的get方法
-(AVAudioPlayer *)audioPlayer
{
    if (!_audioPlayer) {
        NSLog(@"播放器准备启动,开始实例化");
        //1.获取音乐文件路径
        NSString *urlStr = [[NSBundle mainBundle]pathForResource:@"邓紫棋 - 单行的轨道" ofType:@"m4a"];
        NSURL *url = [NSURL fileURLWithPath:urlStr];//获取本地音乐url,只能播放本地
        //2.初始化播放器
        NSError *error;
        _audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];
        //设置播放器属性
        _audioPlayer.numberOfLoops = 0;//0为不循环,负数为无限循环
        _audioPlayer.volume = 0.1;//音量范围0-1
        NSLog(@"%f",_audioPlayer.duration);
        [_audioPlayer prepareToPlay];//加载音频文件到缓存
        _audioPlayer.delegate = self;
    }

    return _audioPlayer;
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
#pragma mark 播放器代理方法-播放结束时
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
    NSLog(@"音乐播放完成");
}
@end
框架


//
//  ViewController.m
//  AudioToolbox音效播放
//
//  Created by DC020 on 15/12/28.
//  Copyright (c) 2015年 Bill. All rights reserved.
//

#import "ViewController.h"
#import <AudioToolbox/AudioToolbox.h>
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //播放系统自带音效
//    AudioServicesPlaySystemSound(1000);;;;;;;;;;
    //1.要获取音效文件路径->文件url
    NSString *audioFile = [[NSBundle mainBundle]pathForResource:@"videoRing" ofType:@"caf"];
    NSURL *fileUrl = [NSURL fileURLWithPath:audioFile];
    //2.获取声音ID
    //参数:音频文件url,声音id
    SystemSoundID soundID = 0;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileUrl, &soundID);
    NSLog(@"%@",audioFile);
    //若是须要在播放完成以后执行某些操做,能够调用一下方法注册一个回调函数
    AudioServicesAddSystemSoundCompletion(soundID, NULL, NULL, soundComplete, NULL);
    //3.播放
    AudioServicesPlaySystemSound(soundID);
    
}
void soundComplete(){
    NSLog(@"播放完成");
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

ide

相关文章
相关标签/搜索