首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用声源/对象/流型获取音频的振幅

用声源/对象/流型获取音频的振幅
EN

Stack Overflow用户
提问于 2017-07-18 06:51:25
回答 1查看 1.3K关注 0票数 4

有谁能帮我找出不同audioPlayer的振幅吗?在我的应用程序中,我需要知道录像机音频的振幅。

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

我找到了一种获取手机audioPlayer振幅的方法,但它提供了在app中播放的各种音频的振幅,而不发送任何源标识符或streamType(MUSIC_STREAMCALL_STREAM),也不需要使用任何不同的东西来识别给定振幅的源,比如播放器或videoCalls。

这只有在我提供audioSessionId of AudioPlayer in Visualizer( audioSessionId )的情况下才会有帮助,但我无法获得任何玩家的audioSessionId (videoCall,youtube),因为ThirdPartySDK。

代码语言:javascript
复制
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);
}

任何建议都会有帮助,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-09 12:43:33

我找到了解决方案,我为VideoCall使用的SDK提供了所有用户的语音级别,所以我用它来实现我的特性。

我发现的其他解决方案是使用MediaRecorder,它提供声音级别的不同来源,如- MIC、VOICE_CALL等。但是由于SDK已经在内部使用MediaRecorder,而且android不允许同时使用两个MediaRecorder实例,所以它对我无效。

android: Detect sound level

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45159542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档