有谁能帮我找出不同audioPlayer的振幅吗?在我的应用程序中,我需要知道录像机音频的振幅。
在我的应用程序中,我有一个videoPlayer (youtube)和videoCall功能。所以当我得到videoCall时,当someOne在videoCall上讲话时,我需要放慢/停止视频播放器的声音。有什么办法能找到吗?
我找到了一种获取手机audioPlayer振幅的方法,但它提供了在app中播放的各种音频的振幅,而不发送任何源标识符或streamType(MUSIC_STREAM或CALL_STREAM),也不需要使用任何不同的东西来识别给定振幅的源,比如播放器或videoCalls。
这只有在我提供audioSessionId of AudioPlayer in Visualizer( audioSessionId )的情况下才会有帮助,但我无法获得任何玩家的audioSessionId (videoCall,youtube),因为ThirdPartySDK。
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);
}任何建议都会有帮助,谢谢。
发布于 2018-01-09 12:43:33
我找到了解决方案,我为VideoCall使用的SDK提供了所有用户的语音级别,所以我用它来实现我的特性。
我发现的其他解决方案是使用MediaRecorder,它提供声音级别的不同来源,如- MIC、VOICE_CALL等。但是由于SDK已经在内部使用MediaRecorder,而且android不允许同时使用两个MediaRecorder实例,所以它对我无效。
https://stackoverflow.com/questions/45159542
复制相似问题