【问题标题】:Native sound library on Android that can actually change pitch?Android上的原生声音库实际上可以改变音高?
【发布时间】:2013-12-20 20:06:33
【问题描述】:

我对如何在 Android 上本地设置音调感到困惑。我尝试从使用 OpenSL ES 的 NDK 中更改原生声音样本,但在请求接口时,我得到了一个 SL_RESULT_FEATURE_UNSUPPORTED 用于几乎所有与音高相关的内容。尝试的接口:SL_IID_PITCH、SL_IID_RATEPITCH、SL_3DDOPPLER

// create audio player
const SLInterfaceID ids[3] = { SL_IID_BUFFERQUEUE, SL_IID_PITCH, SL_IID_VOLUME};
const SLboolean req[3] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE};
result = (*engineEngine)->CreateAudioPlayer(engineEngine, &bqPlayerObject, &audioSrc, &audioSnk,
        3, ids, req);
assert(SL_RESULT_SUCCESS == result);

结果总是 SL_RESULT_UNSUPPORTED

我的目标是 android-19。我也尝试了许多其他方法,但无济于事。难道我做错了什么?是否有不需要使用 Java 的替代方案?

谢谢!

【问题讨论】:

    标签: android c++ audio android-ndk opensl


    【解决方案1】:

    Android 具有 OpenSL 的最小实现,这些接口均不受支持。您可以在 NDK 文档或here 中找到支持(以及已添加的内容)的说明 - 该链接与 NDK 中的文档完全相同。

    不幸的是,除了编写自己的算法来更改 PCM 数据之外,没有其他简单的选择。

    【讨论】:

      【解决方案2】:

      Synthesis ToolKit (STK) 具有可能适合您的音高转换效果。 https://ccrma.stanford.edu/software/stk/

      正如 Dave 指出的,没有原生解决方案。目前,我会说 Android 不是寻找良好原生音频支持的地方。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-17
        • 2017-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多