在錄製音頻與視頻時,並進行音頻播放時,攝像頭卡死的解決辦法

這個問題糾結了我一天兩夜..終於給解決了.解決方法如下:
現象:
    通過IPHONE的攝像頭進行音頻與視頻功能的錄製,同時進行播放MP3功能.只要一開始錄製音視頻,就會出現攝像頭圖像卡死.只有當MP3播放完成後.才恢復正常.
分析
    觀察發現.並不是因爲主線程阻塞造成的.因爲在卡死的過程中..界面上的按鈕還可以正常使用.仔細觀察發現:
   AVCaptureAudioDataOutput *videoOut = [[AVCaptureAudioDataOutput allocinit];
  if ([captureSession canAddOutput:audioOut])
  [captureSession addOutput:audioOut];
 由於已經在進行視頻的錄製和音頻的錄製(如上代碼表示把頻輸出口放入到會話通道中),然後又去播放MP3的話 就會佔用它的音頻錄製的通道這樣有可能整個錄製就將停止(本人是這樣理解的).
解決:
   通過AVAudioSession共享實例中的參數進行設置,並在後臺播放.
- (void)setupAudioSession {
    //audioSession是否已經初始化
    static BOOL audioSessionSetup = NO;
    if (audioSessionSetup) {
        return;   
    }
    //AVAudioSessionCategoryPlayback類別的作用是確保屏幕鎖定時,繼續播放。
    [[AVAudioSession sharedInstancesetCategoryAVAudioSessionCategoryPlayback errornil];
    UInt32 doSetProperty = 1;
    //AVAudioSession參數的設置
    AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOtherssizeof(doSetProperty), &doSetProperty);
    //使設置的參數生效
    [[AVAudioSession sharedInstancesetActiveYES errornil];

    audioSessionSetup = YES;
}
最後說明一點:在錄製和播放的過程中..最好新開一個線程或者使用NSOperatonQueue進行播放..效果更佳
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章