2017-10-04 22 views
8

Tôi có AcousticEchoCanceler làm việc cho các cuộc gọi VoIP cho mọi loại thiết bị khác mà tôi đã thử, nhưng không phải trên bất kỳ thiết bị Samsung nào. Các thiết bị báo cáo AcousticEchoCanceler đang có sẵn nhưng nó chỉ đơn giản là không làm gì cả.AcousticEchoCanceler trên thiết bị Samsung không hoạt động

Những gì tôi đã có:

  • acousticEchoCanceler.setEnabled(true);
  • audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
  • âm thanh session ID thông qua với tỷ lệ AudioTrack
  • mẫu: 16k
  • Cố gắng cả mono và stereo ghi
  • <uses-permission android:name="android.permission.RECORD_AUDIO"/>
  • <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

Có ai có AcousticEchoCanceler hoạt động trên thiết bị Samsung không?

+0

Tôi nhận thấy rằng nó gần như là ngẫu nhiên - trong một số trường hợp AEC hoạt động trên các thiết bị Samsung, đôi khi nó không hoạt động. Tôi vẫn chưa tìm thấy bất kỳ lý do nào cho điều này, cùng một mã chỉ hoạt động ngẫu nhiên. – etan

Trả lời

1

Hãy thử những dòng này:

if (AcousticEchoCanceler.isAvailable() && WebRtcAudioUtils.isAcousticEchoCancelerSupported()) { 
       WebRtcAudioUtils.setWebRtcBasedAcousticEchoCanceler(true); 
       WebRtcAudioUtils.useWebRtcBasedAcousticEchoCanceler(); 
      } 
+0

Dường như mã đó không làm được gì nhiều, toàn bộ đường dẫn cần được thay đổi để sử dụng âm thanh WebRtc. Và tôi không hoàn toàn chắc chắn làm thế nào để làm điều đó. – etan

+0

Thực ra dòng đó một mình khi được thêm vào đúng điểm mã dường như đã khắc phục được sự cố hiện tại - tôi sẽ cần thử nghiệm nhiều hơn nhưng có vẻ hứa hẹn cho đến nay! Ngoài ra, hãy xem [Tài liệu của Twilio] (https://github.com/twilio/video-quickstart-android#configuring-hardware-audio-effects) về việc này. – etan

+0

Ngoại trừ bây giờ nó đã phá vỡ trên Samsung một lần nữa và không có gì giúp đỡ nó nữa – etan

1

Tôi đã cố gắng mã này một vài năm trước đây và nhớ rằng nó làm việc. Không thể nói nó sẽ như thế nào với các thiết bị mới nhất.

int audioSource = MediaRecorder.AudioSource.VOICE_COMMUNICATION; 
int sampleFreq = 16000; 
int numChannels = 1; 
int numBytesPerSample = 2; 
int channelConfig = numChannels == 1 ? AudioFormat.CHANNEL_IN_MONO : AudioFormat.CHANNEL_IN_STEREO; 
int audioFormat = numBytesPerSample == 2 ? AudioFormat.ENCODING_PCM_16BIT : AudioFormat.ENCODING_PCM_8BIT; 
int bufSize = AudioRecord.getMinBufferSize(sampleFreq, channelConfig, audioFormat); 
if (bufSize == AudioRecord.ERROR_BAD_VALUE || bufSize == AudioRecord.ERROR) { 
     return; 
} 

AudioRecord audioInRecord = new AudioRecord(audioSource, sampleFreq, 
       channelConfig, audioFormat, bufSize); 
if (audioInRecord.getState() != AudioRecord.STATE_INITIALIZED) { 
    return; 
} 

boolean aecAvailable = AcousticEchoCanceler.isAvailable(); 
if (aecAvailable) { 
    AcousticEchoCanceler instance; 
    if((instance = AcousticEchoCanceler.create(audioInRecord.getAudioSessionId())) != null) { 
     instance.setEnabled(true); 
     Log.d(TAG, "AEC enabled"); 
    } else { 
     Log.d(TAG, "AEC disabled"); 
    } 
} 
+0

Tôi đã có một mã tương tự, nhưng nó ngẫu nhiên không hoạt động trên các thiết bị Samsung mới nhất. – etan

0

Gần đây tôi đã gặp sự cố tương tự. Phần quan trọng nhất đối với tôi là sử dụng audioManager.setMode (AudioManager.MODE_IN_COMMUNICATION) trước khi tạo AudioRecord.

Tiếp theo AudioRecord đã được tạo ra với:

mAudioRecord = new AudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION, mSamplingRate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, audioRecordBufferSize); 

Và cuối cùng tạo ra và cho phép các NS và AEC:

mNoiseSuppressor = NoiseSuppressor.create(mAudioRecord.getAudioSessionId()); 
if (mNoiseSuppressor != null) { 
    int res = mNoiseSuppressor.setEnabled(true); 
} 

mAcousticEchoCanceler = AcousticEchoCanceler.create(mAudioRecord.getAudioSessionId()); 
if (mAcousticEchoCanceler != null) { 
    int res = mAcousticEchoCanceler.setEnabled(true); 
} 

Các AudioTrack không cần phải được liên kết với cùng ID Âm thanh phiên hơn AudioTrack (Tôi cho rằng nó nên được thực hiện tự động).

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