iOS音视频学习2——播放音乐(基本)

音乐

如果播放较大的音频或者要对音频有精确的控制则System Sound Service可能就很难满足实际需求了,通常这种情况会选择使用AVFoundation.framework中的AVAudioPlayer来实现。
AVAudioPlayer可以看成一个播放器,它支持多种音频格式,而且能够进行进度、音量、播放速度等控制。
首先简单看一下AVAudioPlayer常用的属性和方法

iOS音视频学习2——播放音乐(基本)_第1张图片
属性

iOS音视频学习2——播放音乐(基本)_第2张图片
对象方法

iOS音视频学习2——播放音乐(基本)_第3张图片
代理方法

AVAudioPlayer的使用比较简单:

  • 初始化AVAudioPlayer对象,此时通常指定本地文件路径。
  • 设置播放器属性,例如重复次数、音量大小等。
  • 调用play方法播放。

播放的代码如下:

//
//  ViewController.m
//  prac
//
//  Created by Realank on 16/3/23.
//  Copyright © 2016年 realank. All rights reserved.
//

#import "ViewController.h"
#import 
@interface ViewController () 

@property (nonatomic, strong) AVAudioPlayer *audioPlayer;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

}

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

- (AVAudioPlayer *)audioPlayer {
    if (!_audioPlayer) {
        NSString *urlStr=[[NSBundle mainBundle]pathForResource:@"liang.mp3" ofType:nil];
        NSURL *url=[NSURL fileURLWithPath:urlStr];
        NSError *error=nil;
        //初始化播放器,注意这里的Url参数只能时文件路径,不支持HTTP Url
        _audioPlayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];
        //设置播放器属性
        _audioPlayer.numberOfLoops=0;//设置为0不循环
        _audioPlayer.delegate=self;
        [_audioPlayer prepareToPlay];//加载音频文件到缓存
        if(error){
            NSLog(@"初始化播放器过程发生错误,错误信息:%@",error.localizedDescription);
            return nil;
        }
    }
    
    return _audioPlayer;
}


- (void)musicPlayback {
    if (!self.audioPlayer.isPlaying) {
        [self.audioPlayer play];
    }
    
}

-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
    NSLog(@"音乐播放完成...");
}


@end

你可能感兴趣的:(iOS音视频学习2——播放音乐(基本))