ios原聲音頻播放AVAudioSession 總結

 

//音頻播放
/*英譯: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

(通常建一個按鈕,監聽方法裏面寫這些東西)

相關文章
相關標籤/搜索