//音頻播放
/*英譯:record:錄音 */網絡
1 導入頭文件
#import<AVFoundation/AVFoundation.h>
//AVAudioSession是一個單例模式。
在IOS7之前能夠不用設置,在IOS7上不設置AVAudioSession則不能夠錄音。框架
//處理錄音或播放結束後,要關閉音頻會話,來延續後臺音樂的播放ui
AVAudioSession *audioSession = [AVAudioSession sharedInstance];url
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioSession setActive:NO error:nil];spa
//處理要想啓用其餘程序的後臺音樂播放,則要用以下設置
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioSession setActive:NO withFlags:AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivatio調試
//處理錄音保存路徑orm
1 CFUUID每次都會產生一個惟一號
CFUUIDRef cfuuid = CFUUIDCreate(kCFAllocatorDefault);視頻
NSString *cfuuidString = (NSString*)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault
對象
2 建立沙盒
NSString *catchPath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];內存
3 建立沙盒文件夾(惟一的)
NSString *audioRecordFilePath=[catchPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.AAC", cfuuidString]];
4 將本地NSString轉化爲NSURL(fileURLWithPath)
NSURL *url=[NSURL fileURLWithPath:audioRecordFilePath];
//音頻錄製(標準過程5,9更新)
準備:導入AVFoundation框架及頭文件
1 設置會話類型,指定類型爲播放及錄音
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
2 激活會話類別
[audioSession setActive:YES error:nil];
3 封裝字典參數,有音頻格式int,採樣率float,通道數int,深度int
是經過KVC來設置的(setValue forKey)
NSDictionary *setting=[NSDictionary dictionary];
[setting setValue:[NSNumber numberWithInt:kAudioFormatAppleIMA4] forKey:AVFormatIDKey];
4 封裝保存音頻的沙盒路徑
5 實例化錄音對象,參數:保存URL,參數字典,錯誤,
注意模擬器調試,只能保存到沙盒中,
AVAudioRecorder *recorder = [[AVAudioRecorder alloc]initWithURL:(NSURL *) settings:(NSDictionary *) error:&error];
6 預加載準備錄音
[recorder prepareRecorder];
7 處理按鈕點擊監聽錄音
監聽按鈕touchDown:錄音開啓 [recorder recorder];
監聽按鈕touchUpInset:手指在點擊按鈕後擡起
及touchUpOutset:手指在點擊按鈕後在其餘地方擡起
中止錄音 [recorder stop];
錄音的實現總結:
1 實例化單例會話對象,設置會話類別爲錄音及播放模式,開啓會話
2 實例化錄音對象,參數有存儲沙盒路徑,音頻字典參數(音頻格式,採樣率,深度等)
3 封裝沙盒路徑
4 實例化錄音對象 路徑 字典參數 錯誤
5 預加載開啓
6 監聽按鈕的點擊狀態,按下錄音,擡起中止
7 監聽點擊 實例化音頻播放對象,填入URL,播放開啓
//音頻播放(限本地播放)
蘋果推薦的音頻類型:AAC,IMA4,CAF(CoreAudioFormat)
1 AVFoundation
(只能播放本地音頻,非網絡音頻)
_player=[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
[_player play];
總結:播放本地音頻三步
《1》封裝音頻URL路徑
《2》類方法 初始化音頻對象,參數URL 錯誤處理
《3》對象開啓
對象中有許多屬性 設置循環次數,播放控制(play/stop)及預加載方法prepareToPlay
//視頻音頻播放(支持網絡)
2 MediaPlayer
一、首先導入media.play.framework 框架
二、包含頭文件<MediaPlayer/MediaPlay.h>
具體實現步驟
1 封裝URL路徑
2 實例化MPMoviePlayerController對象
alloc initWithURL 添加URL
3 將音頻控制器View添加到self.view (add)
(因爲創建控制器,給視頻播放對象非配內存空間,播放結束要去釋放他,電影播放結束是會註冊一個叫MPMoviePlaybackDidFinishNotification的通知通知到到通知中心,因此作音頻播放對象釋放,給self添加監聽者來釋放)
4 [NSNotificationCenter defaultCenter] addObsever:self selector:@selector(MovePlayBackComplete:)Object:
4 音頻對象開啓 play
(通常建一個按鈕,監聽方法裏面寫這些東西)