【问题标题】:How to change each audio band's volume using Equalizer?如何使用均衡器更改每个音频频段的音量?
【发布时间】:2018-08-02 02:00:44
【问题描述】:

我没有看到任何东西可以让我在 audiofx.Equalizer 库中具体控制每个音频波段的音量。不可能吗? 任何意见和建议将不胜感激。谢谢。

【问题讨论】:

    标签: android audio


    【解决方案1】:

    需要调用setBandLevel方法:

    public void setBandLevel(short band, short level)
    

    在您的 Equalizer 对象实例上。

    由于不同的 Android 设备具有不同数量的频段以及不同的可用属性(增益、带宽、中心频率...),因此您还需要知道可用的最大频段数量和增益范围(至少)给你。

    // New instance of equalizer (add it as a member of your class rather than a scoped instance like this)
    Equalizer mEqualizer = new Equalizer(0, mMediaPlayer.getAudioSessionId());
    
    // Get the number of bands available on your device
    short bands = mEqualizer.getNumberOfBands();
    
    // Get the gain level available for the bands
    final short minEQLevel = mEqualizer.getBandLevelRange()[0];
    final short maxEQLevel = mEqualizer.getBandLevelRange()[1];
    

    然后,您可以通过将您的 EQ 水平除以百分比来调用您的 setBandLevel 方法。

    有关更多信息,请参阅Equalizer 通用文档 - 有更多方法可以获取参数 EQ 的中心频率和频带宽度等特定信息。

    Here 是某人在 Android 项目中使用均衡器和可视化器的完整示例。

    【讨论】:

      【解决方案2】:

      根据documentation

      setBandLevel
      public void setBandLevel (short band, short level)
      将给定的均衡器频段设置为给定的增益值。

      您需要在 Equalizer 实例上调用该方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-23
        • 2015-07-15
        • 1970-01-01
        • 1970-01-01
        • 2022-11-22
        • 1970-01-01
        • 2016-07-29
        • 1970-01-01
        相关资源
        最近更新 更多