可以在線播放音樂
https://github.com/tumtumtum/StreamingKit
A fast and extensible gapless AudioPlayer/AudioStreamer for OSX and iOS (iPhone, iPad)
player必須要寫成實(shí)例變量树肃,不然會被釋放
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/music.mp3"];
_player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
//必須在prepare之前設(shè)置這個,rate才起作用
_player.enableRate = YES;
//播放速率
_player.rate = 2.0;
//音量
_player.volume = 0.5;
//循環(huán)次數(shù)
_player.numberOfLoops = 0;
//設(shè)置當(dāng)前播放時間
_player.currentTime = 0;
NSLog(@"聲道數(shù)目: %lu", _player.numberOfChannels);
NSLog(@"歌曲時長: %f", _player.duration);
//開啟電平計數(shù)
_player.meteringEnabled = YES;
[_player updateMeters];
for (int i = 0; i<_player.numberOfChannels; i++) {
float power = [_player averagePowerForChannel:i];
float peak = [_player peakPowerForChannel:i];
NSLog(@"聲道: %d, 平均電平: %f, 峰值電平: %f",i,power,peak);
}
[_player prepareToPlay];
[_player play];
注冊播放被中斷的通知
- (void)handleInterruption: (NSNotification*)notification {
NSLog(@"%@", notification.userInfo);
AVAudioSessionInterruptionType interruptType;
NSNumber *value = notification.userInfo[@"AVAudioSessionInterruptionTypeKey"];
interruptType = value.integerValue;
if ([notification.userInfo[@"AVAudioSessionInterruptionTypeKey"] isEqual:@(AVAudioSessionInterruptionTypeBegan)]) {
//中斷開始,電話來了
[_player pause];
}
else if(interruptType == AVAudioSessionInterruptionTypeEnded) {
//中斷結(jié)束, 是否恢復(fù)播放
if ([notification.userInfo[@"AVAudioSessionInterruptionTypeKey"] isEqual:@(AVAudioSessionInterruptionTypeBegan)]) {
[_player play];
}
}
}
iOS音頻回話類別
- AVAudioSessionCategoryAmbient
這個類不會停止其他的聲音瀑罗,相反他允許你App的音頻播放與其他應(yīng)用聲音之上胸嘴,調(diào)用
AVAudioPlayer的prepareToPlay和play方法都會返回YES雏掠。但是用戶鎖屏?xí)r你的App將停止所有
正在播放的音頻,僅當(dāng)你的App是唯一播放音頻文件的應(yīng)用時劣像,靜音模式將停止你的Ap的音頻回放乡话。如
果正當(dāng)iPod播放一首歌時,你開始播放音頻耳奕,將設(shè)備設(shè)置為靜音模式并不能停止你的音頻回放绑青。
- AVAudioSessionCategorySoloAmbient
這個非常像AVAudioSessionCategoryAmbient類別,除了會停止其他App的音頻回放屋群,比如iPod
程序闸婴,當(dāng)設(shè)備設(shè)置為靜音模式,你的音頻回放將會停止芍躏。
- AVAudioSessionCategoryRecord
這會停止其他應(yīng)用的聲音并且讓你的應(yīng)用也不能初始化音頻回放邪乍,在該模式下你只能進(jìn)行錄音,使用該
類別对竣,調(diào)用AVAudioPlayer的prepareToPlay會返回YES庇楞,但是調(diào)用play會返回NO。主UI界面會正
常工作否纬,這時吕晌,即使你的設(shè)備屏幕被用戶鎖定,應(yīng)用錄音仍然會繼續(xù)烦味。
- AVAudioSessionCategoryPlayback
這個類別會禁止其他應(yīng)用的音頻回放聂使,你可以使用AVAudioPlayer的prepareToPlay和play方法在
你應(yīng)用中播放聲音,主界面會照常工作谬俄,這時柏靶,即使屏幕被鎖或者設(shè)備為靜音模式,你應(yīng)用的音頻回放
都會繼續(xù)溃论。
- AVAudioSessionCategoryPlayAndRecord
這個類別允許你的應(yīng)用程序同時進(jìn)行聲音的播放和錄制屎蜓,當(dāng)聲音錄制或者播放開始后,其他應(yīng)用聲音播
放會停止钥勋。當(dāng)主頁面會照常工作炬转,這時,即使屏幕被鎖定or設(shè)備為靜音模式算灸,音頻回放和錄制都會繼
續(xù)扼劈。
- AVAudioSessionCategoryAudioProcessing
這個類別用于應(yīng)用中進(jìn)行音頻處理的情形,而不是音頻回放和錄制菲驴。設(shè)置了這個模式荐吵,你在應(yīng)用中就不
能播放和錄制任何聲音。調(diào)用AVAudioPlayer的prepareToPlay和play方法都將返回NO。其他應(yīng)用
的音頻回放先煎,比如iPod也會在此模式下 停止贼涩。