2013-05-06 29 views
4

我到處尋找,找不到調整AVCaptureSession輸入設備輸入音量的方法。我能做的最好的事情,根本無法幫助我,它是通過訪問來自AVCaptureAudioDataOutput的連接(AVCaptureConnections) - 即通過監視預覽輸出中的級別來獲取設備的音頻級別。有什麼方法可以改變輸入增益,甚至是直接在AVFoundation中獲得音頻輸入電平嗎?我仍然在學習一點,所以我很抱歉如果我錯過了任何明顯的事情。使用AVFoundation調整輸入音量(在AVCaptureSession中)

編輯:我應該注意到這是OSX。

回答

1

因此,我使用了一些他鏈接的信息,以及對Core Audio的一些研究,並將其轉化爲github項目。這樣,其他人在使用AVFoundation時想改變設備的輸入音量就不必重新發明輪子。你可以在這裏找到這些課程:https://github.com/ewrobinson/ERVolumeAdjust

+0

謝謝!大的幫助。 – spartygw 2014-11-25 01:26:47

1
self.audioSession = [AVAudioSession sharedInstance]; 
if (self.audioSession.isInputGainSettable) { 
    BOOL success = [self.audioSession setInputGain:sender.value error:&error]; 
    if (!success) NSLog(@"inputGain error: %@",error); 
} 

這是iOS6的+ ...爲iOS5的,你可以使用AudioSessionGetProperty/AudioSessionSetProperty功能來實現相同的。

但並非所有硬件都能夠調整輸入增益。例如,我可以通過內置麥克風在iPhone 3GS/ios6上獲得增益設置,但不能通過內置麥克風在iPad mini上設置。在錄製實際開始之前,iPhone 3GS的增益也無法設置。 (編輯:iPhone 4S/iOS5中也有增益設定與內置麥克風)

更新
正如你所指出的那樣,你正在尋找一個OSX的解決方案,而不是iOS版。我已經移動了這個答案(更詳細)to a better place

對於OSX,你會發現這個問答&有用:

How do you set the input level (gain) on the built-in input (OSX Core Audio/Audio Unit)?

+0

我沒有提到,這是爲OSX,而​​不是ios。對於那個很抱歉。 – ewrobinson 2013-05-07 04:29:26

+0

@ewrobinson - 我已將OSX標記添加到您的問題中。我的努力沒有被浪費,我發現了一個[未回答的問題](http://stackoverflow.com/questions/10871231/how-to-control-hardware-mic-input-gain-level-on-iphone/16420963#16420963 )非常合身,所以填寫了更多細節並貼在那裏。 – foundry 2013-05-07 14:15:19

+0

啊,我對這個網站有點新,所以我忘了標記爲OSX。謝謝。如果只有OSX具有某些AVAudioSession功能...您使用CoreAudio更改默認輸入設備上的輸入增益的發佈鏈接似乎具有我所需的開始。我曾(錯誤地)認爲這種能力在OSX的AVFoundaiton中可用(似乎在ios中),但事實並非如此。看起來我的下一個任務是弄清楚AVCaptureSession使用哪個設備以及如何識別CoreAudio中的設備。謝謝您的幫助。 – ewrobinson 2013-05-07 20:12:33

1

你可以通過設置你的會話輸出的音頻連接的volume性能增益。
考慮到連接可能有多個通道。

我在這裏假設參考了一個fileOutput ivar,這是我在將輸出添加到會話之前存儲的。

AVCaptureConnection* audioConnection = [fileOutput connectionWithMediaType:AVMediaTypeAudio]; 
if(audioConnection) 
{ 
    for(AVCaptureAudioChannel* audioChannel in [audioConnection audioChannels]) 
    { 
     audioChannel.volume = 0.5; 
    } 
} 
+0

不幸的是,我認爲這隻會影響預覽輸出,而不會影響輸入的水平。我的目標是直接改變輸入增益。 – ewrobinson 2013-05-07 20:17:19

+0

嗯。你試過了嗎? 我在這裏成功使用它,區別在於我使用AVCaptureFileOutput的實例而不是AVCaptureAudioDataOutput。對我來說,似乎是影響Mac上信號增益的唯一選擇。 OS X缺乏整個AVAudioSession的東西,但與iOS相比,它在AVCaptureAudioChannel上提供了音量屬性。 – 2013-05-07 20:41:27

+0

但是,這不僅僅是使輸出(無論是預覽還是文件)在不考慮輸入音量的情況下響亮/柔和?我的印象是,如果聲音的一部分因爲聲音太大而被裁剪,它將無濟於事 - 它會降低保存的文件的音量,但被剪輯的聲音將會丟失(這正是我試圖避免)。當然,我完全有可能誤解了。 – ewrobinson 2013-05-07 21:53:08

相關問題