【问题标题】:Need help about sound processing需要有关声音处理的帮助
【发布时间】:2011-10-20 08:50:44
【问题描述】:

如何从立体声文件 (.mp3) 中获取样本数据并将其推送到缓冲区中? 是否有具有该功能的特定库? 对不起,如果这个问题真的是菜鸟,我对音频编程很陌生。

提前致谢 =)

【问题讨论】:

    标签: android audio mp3 processing sampling


    【解决方案1】:

    “通过直接 Android API 播放 MP3 文件的唯一方法是 MediaPlayer,它是重量级的、缓慢的并且只提供高级 API。如果您需要混合或修改音频流或以低延迟管理它们,你就靠自己了。”

    (通过:http://mindtherobot.com/blog/624/android-audio-play-an-mp3-file-on-an-audiotrack/

    所以这很不幸。 JLayer 是免费的,并且是用 Java 编写的,所以你可以使用它:

    http://www.javazoom.net/javalayer/javalayer.html

    它是否足够快取决于您要进行多少分析,以及手机中的处理器类型以及正在运行的其他应用程序。所有平常的事情。

    如果你有一些 CPU 密集型的东西,你可以编写本机代码并使用 C/C++ 库,这将使你有更好的机会进行实时分析:

    http://developer.android.com/sdk/ndk/overview.html

    某些 ARM 处理器具有矢量指令等,如果可用,您可以利用它们,这可以提高速度:

    http://www.arm.com/products/processors/technologies/neon.php

    如果您正在做的事情不能是纯实时的,您可以考虑进行全部或部分预处理。然后缓存分析信息,这样用户只需第一次等待……或者让他们选择让您的应用在一夜之间分析所有文件等。

    【讨论】:

    • 那么这意味着不可能在Android中创建一个可以在手机中加载音乐文件(主要是mp3格式)并在运行时流畅地分析它们的应用程序?我创建了一种机制来浏览手机中的所有音乐文件并使用 MediaPlayer 根据用户选择播放音乐。所以现在,我想在运行时分析音乐,或者在播放之前为系统提供一定的时间来分析音乐。
    • 我明白了。非常感谢您提供的详细信息和链接! =)
    • 还有一个问题,我将应用简单的节拍检测算法。它基本上是从音频中获取样本,计算东西,并确定是否有节拍。你认为它需要繁重的处理吗?我找到了一个专门用于节拍检测的库code.compartmental.net/tools/minim/manual-beatdetect,虽然它是用 Java 编写的,但它似乎不是为 Eclipse 创建的,因为它是为处理创建的(它需要 PApplet,即处理小程序)。它的编写方式看起来很简单,所以我假设节拍检测算法没有那么重
    • 你只需要在你感兴趣的设备上进行分析,看看你是否可以通过某种技术堆栈获得你想要的效果。坏节拍检测很便宜,而令人印象深刻的节拍检测是一项人工智能任务。我不确定 Snowball(tm) 运行的是哪种芯片组,但他做得很好,尽管人们是否找到了“真正的”节拍仍然相当主观:) youtube.com/watch?v=Xxcoy58yElo
    • 如果您使用 C++ 编程,我建议不要害怕 NDK,设置起来并不难。通过避开 Java 并编写更多本机代码,如果您愿意的话,您还可以使您的应用程序更容易移植到 iPhone……我不喜欢 iPhone/Apple。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 2019-09-05
    • 2018-06-12
    相关资源
    最近更新 更多