標籤:加工 avs .net 取圖 方便 設定 cti 本地 ios
這個是AudioSession的結構圖:
前一個部分已經介紹了AVFoundation對音頻錄製、播放的一種方法,以下再介紹第二種:
AVCaptureSession
用這個類的長處在什麼地方呢?
(1)能夠方面的對輸入源進行控制:方便錄製音頻視頻。抓取圖片。
(2)採集到資料來源方便二次加工。比方音頻變聲、加背景音樂。視頻加入濾鏡特效。
(3)定製編解碼方法,儘可能採用IOS支援的硬編硬解。
比方7.0之前的AAC MPEG-4
當然8.0之後都支援H264的硬編解碼。
所以假設想做一些複雜點的音視頻APP,這個類是經經常使用到也是很重要的。
先來看看AVCaptureSession的總體結構:
我們用這個結構能夠做哪些事情呢?(1)錄製音頻、視頻、音頻+視頻(2)錄製過程中錄製介面展示(3)靜態圖片抓取(4)中介層截獲音視頻資料流,實現音頻特效,視頻特效。
由於這裡我們拿到的是資料流。所以要想進行本機存放區還須要用到一個類AVAsset。
看看我們究竟怎麼用這個東東:
以下這個圖描寫敘述了AVCaptureSession使用的基本流程
(1) 執行個體化AVCaptureSession(橙色部分)將輸入輸出源綁定到AVCaptureSession上。
輸入源設定為mic:
AVCaptureDevice *mic = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeAudio];
AVCaptureDeviceInput *audioinput = [AVCaptureDeviceInputdeviceInputWithDevice:mic error:nil];
輸出源設定為AVCaptureAudioDataOutput:
(2) 執行個體化紫色部分
紫色部拿到錄音資料怎樣寫到本地呢?這個時候就須要執行個體化AVAsset:
_AudioWriteInput = [[AVAssetWriterInputalloc]initWithMediaType:AVMediaTypeAudiooutputSettings:setting];
參數設定:
NSDictionary *setting = [NSDictionarydictionaryWithObjectsAndKeys:
[ NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,
[ NSNumber numberWithInt: _AudioChannels], AVNumberOfChannelsKey,
[ NSNumber numberWithFloat: _Audiosamplerate], AVSampleRateKey,
[ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey,
_AudioChannelLayoutData,AVChannelLayoutKey,
nil];
音頻相關參數設定參考還有一篇部落格:
音頻格式具體解釋:WAV
(3) 啟動整個音頻管道,開始進行錄音
(4) 音頻回調方法會接收到錄製的音頻資料。將資料傳遞給AVAsset,寫入到本地檔案裡。
寫入音頻資料:
[_AudioWriteInputappendSampleBuffer:sampleBuffer];
寫入音頻時間戳記:
[_AudioWriterstartSessionAtSourceTime:startTime];
AudioSession/AudioCaptureSession的分析與使用