获取音频的振幅及其源/对象/流类型



任何人都可以帮我找到任何方法来查找应用程序中不同音频播放器的振幅吗?我需要知道我的应用程序中视频通话音频的幅度。

在我的应用程序中,我有一个视频播放器(youtube(和视频通话功能。因此,当我获得视频通话时,当有人在videoCall上讲话时,我需要减慢/停止视频播放器的声音。有什么办法可以找到吗?

我找到了一种方法来获取手机 audioPlayer 的振幅,但这提供了在应用程序中播放的各种音频的振幅,而无需发送源或流类型(MUSIC_STREAMCALL_STREAM(的任何标识符或任何不同的东西,我可以识别给定振幅的来源,如播放器或视频通话。

这只有在我在Visualizer(audioSessionId(中提供AudioPlayer的audioSessionId时才会有所帮助,但由于第三方SDK,我无法获得任何播放器(videoCall,youtube(的audioSessionId。

private void createVisualizer(){
int rate = Visualizer.getMaxCaptureRate();
Visualizer audioOutput = new Visualizer(0); //  get output audio stream
audioOutput.setDataCaptureListener(new Visualizer.OnDataCaptureListener() {
@Override
public void onWaveFormDataCapture(Visualizer visualizer, byte[] waveform, int samplingRate) {
float intensity = ((float) waveform[0] + 128f) / 256;
Log.d("visualizer = ", "visualizer = "+visualizer+ "visualizer = "+String.valueOf(intensity));
}
@Override
public void onFftDataCapture(Visualizer visualizer, byte[] fft, int samplingRate) {
}
},rate , true, false); // waveform not freq data
Log.d("rate", String.valueOf(Visualizer.getMaxCaptureRate()));
audioOutput.setEnabled(true);
}

任何建议都会有所帮助,提前感谢。

我找到了解决方案,我用于视频通话的SDK提供了所有用户的语音级别,所以我用它来实现我的功能。

我发现的其他解决方案是使用MediaRecorder,它提供不同来源的声音级别,例如 - MIC,VOICE_CALL等。但是由于SDK已经在内部使用MediaRecorder,并且Android不允许同时使用2个MediaRecorder实例,因此它对我不起作用。

安卓:检测声级

最新更新