2017-08-15 13 views
13

我有一個WebRTC iOS應用程序。我有AVAudioSessionRTCAudioSource。 我需要檢測麥克風何時開始接收響亮的聲音(例如某人開始講話時),類似於hark在瀏覽器中使用AudioContext所做的操作。 如何檢測它或獲取類似於流量的物體,如AVCaptureAudioChannelAVCaptureAudioDataOutput在iOS的WebRTC中測量話筒電平

+3

假設您將進行webrtc調用,爲什麼不考慮使用peerconnection-> getStats()方法並使用'audioInputLevel' stats參數?此參數提供輸入音頻電平,您可以使用該參數來了解聲音的強度。 – manishg

+2

@manishg不幸的是我沒有這個API。它在哪個版本中引入?這[doxygen](http://webrtc.b0.upaiyun.com/da/d93/class_r_t_c_peer_connection.html)對此也一無所知。 – teivaz

+3

它已經很久沒有去過了。您可以檢查頭文件 – manishg

回答

2

使用AVAudioSession請求許可錄製音頻後,我會建議使用AVAudioRecorder。它是一個相當簡單的類,並且是簡單:

  • 創建AVAudioRecorder
  • 調用實例
  • 方法prepareToRecord的一個實例使用該方法meteringEnabled
啓用的聲音測量功能

啓用錄音後,您可以訪問錄音音量測量使用方法averagePowerForChannel:

您可能需要閱讀蘋果的documentation

~~~~~~~~~~~~~~~~~~~~~~~ N O T E ~~~~~~~~~ ~~~~~~~~~~~~~~

我不熟悉的WebRTC架構/功能,但AVAudioRecorder類會期間,爲您提供能力措施音頻輸入記錄。

~~~~~~~~~~~~~~~~~~~~~~ S A M P L E ~~~~~~~~~~~~~~~~~~~~~~

我已經包含了我過去使用過的GitHub​​。它設置爲使用我描述的AVAudioRecorder類來檢測音頻的靈敏度。

+0

問題是,WebRTC音軌是通過內部方法請求的: 'RTCAudioTrack * audioTrack = [self.peerConnectionFactory audioTrackWithTrackId:trackId];'並且我不創建任何錄音機。 – teivaz