iOS多媒體播放音樂AVAudioPlayer和AVPlayer
1 iOS系統的音頻播放方式
AVAudioPlayer AVPlayer 系統聲音音頻排列
AVAudioPlayer
使用簡單方便,但只能播放本地音頻,不支持流媒體播放
AVPlayer
iOS4.0以後,可以使用AVPlayer播放本地音頻和支持流媒體播放,但是提供接口較少,處理音頻不夠靈活
音頻隊列
音頻隊列主要處理流媒體播放,提供了強大且靈活的API接口(C行數的接口),但是處理起來較為復雜。
2 AVAudioPlayer的使用
使用AVAudioPlayer和AVPlayer需要引用AVFoundation類庫
ViewController.h
#import
#import
@interface ViewController :UIViewController
{
AVAudioPlayer *audioplayer;
}
@end
在.m文件中的loadview方法中添加以下方法
#import "ViewController.h"
@interfaceViewController ()
@end
@implementation ViewController
@synthesize label;
@synthesize textField;
- (void)viewDidLoad
{
[superview DidLoad];
//方法一:
//NSURL *url = [NSURL fileURLWithPath:[NSString
//stringWithFormat:@"%@/想你的夜.mp3", [[NSBundle mainBundle] resourcePath]]];
//方法二
NSBundle *bundle = [NSBundlemainBundle];
NSString *urlString = [bundlepathForResource:@"想你的夜" ofType:@"mp3"];
NSURL *url = [NSURLfileURLWithPath:urlString];
NSError *error;
audioplayer = [[AVAudioPlayeralloc]initWithContentsOfURL:urlerror:&error];
//音量的控制
audioplayer.volume=0.8;//0.0~1.0之間
//循環次數,只要將AVAudioPlayer的numberOfLoops屬性設為負數,音頻文件就會一直循環播放直到調用stop方法
audioplayer.numberOfLoops = 3;//默認只播放一次
//播放位置
audioplayer.currentTime = 15.0;//可以指定從任意位置開始播放
//聲道數
NSInteger channals = audioplayer.numberOfChannels;//只讀屬性
//持續時間
NSTimeInterval duration = audioplayer.duration;//獲取采取的持續時間
if (audioplayer==nil) {
NSLog([error description]);
}
else{
[audioplayer play];
}
}
@end
播放聲音
代理方法
加入播放出現異常,或者被更高級別的系統任務打斷,我們的程序還沒來得及收場就掛了,怎麼辦?不急,我們可以通過幾個委托方法很好地處理所有的情形。
首先給player設置委托是必須的: