2017-08-15 15 views
13

Tôi có ứng dụng WebRTC iOS. Ở đó tôi có AVAudioSessionRTCAudioSource. Tôi cần phát hiện khi một micrô bắt đầu nhận được âm thanh lớn (như khi một người bắt đầu nói) tương tự như những gì hark thực hiện trong trình duyệt với AudioContext. Làm cách nào để phát hiện hoặc nhận được nội dung nào đó giống với luồng có thể được đo lường như AVCaptureAudioChannel hoặc AVCaptureAudioDataOutput?Đo mức micrô trong WebRTC cho iOS

+3

Giả sử bạn sẽ thực hiện các cuộc gọi webrtc, tại sao bạn không cân nhắc sử dụng phương thức peerconnection-> getStats() và sử dụng tham số số liệu thống kê 'audioInputLevel'? Tham số này cung cấp mức âm thanh đầu vào và bạn có thể sử dụng cùng mức để biết cường độ của âm thanh. – manishg

+2

@manishg tiếc là tôi không có API này. Phiên bản được giới thiệu ở đâu? [Doxygen] này (http://webrtc.b0.upaiyun.com/da/d93/class_r_t_c_peer_connection.html) không biết gì về nó cả. – teivaz

+3

Đã có từ lâu rồi. Bạn có thể kiểm tra các tệp tiêu đề – manishg

Trả lời

2

Sau khi sử dụng AVAudioSession để yêu cầu quyền ghi âm, tôi sẽ đề xuất sử dụng AVAudioRecorder. Đó là một lớp học khá đơn giản và cũng đơn giản như:

  • Tạo một thể hiện của AVAudioRecorder
  • Gọi phương pháp prepareToRecord trên dụ
  • Enable chức năng đo âm thanh bằng cách sử dụng phương pháp meteringEnabled

Sau khi bật ghi âm, bạn có thể truy cập âm lượng ghi đo lường sử dụng phương pháp averagePowerForChannel:.

Bạn có thể muốn đọc của Apple documentation

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

tôi không quen thuộc với WebRTC của khung/chức năng, nhưng lớp AVAudioRecorder sẽ cung cấp cho bạn khả năng biện pháp đầu vào âm thanh trong một ghi âm.

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

Tôi đã bao gồm GitHub sample project mà tôi đã sử dụng trong quá khứ. Nó được thiết lập để phát hiện độ nhạy của âm thanh bằng cách sử dụng lớp AVAudioRecorder mà tôi đã mô tả.

+0

Vấn đề là đối với bản âm thanh WebRTC được yêu cầu thông qua phương thức nội bộ: 'RTCAudioTrack * audioTrack = [self.peerConnectionFactory audioTrackWithTrackId: trackId];' và tôi không tạo bất kỳ trình ghi âm nào. – teivaz

Các vấn đề liên quan