获取播放期间的音量
我在字节数组中有一些音频数据(原始 AAC)用于播放。在播放过程中,我需要获取其音量/幅度来绘制(类似于播放时的音频波)。
我现在的想法是每 200 毫秒获取当前音频的音量/幅度,并将其用于绘图(使用画布),但我不知道该怎么做。
。 。 。 。
** 2011/07/13 添加以下内容 **
抱歉,其他项目被推迟到现在。
我尝试的是在线程中运行以下代码,并播放我的 AAC 音频。
a loop
{
// int v=audio.getStreamVolume(AudioManager.MODE_NORMAL);
// int v=audio.getStreamVolume(AudioManager.STREAM_MUSIC);
int v=audio.getStreamVolume(AudioManager.STREAM_DTMF);
// Tried 3 settings above
Log.i(HiCardConstants.TAG, "Volume - "+v);
try{Thread.sleep(200);}
catch(InterruptedException ie){}
}
但只能得到一个固定值,而不是动态音量...
而且我还发现了一个名为 Visualizer 的类,但不幸的是,我的目标平台是 Android 2.2...:-(
欢迎任何建议 :-)
I have some audio data (raw AAC) inside a byte array for playback. During playback, I need to get its volume/amplitude to draw (something like an audio wave when playing).
What I'm thinking now is to get the volume/amplitude of the current audio every 200 milliseconds and use that for drawing (using a canvas), but I'm not sure how to do that.
.
.
.
.
** 2011/07/13 add following **
Sorry just been delayed on other project until now.
What I tried is run the following codes in a thread, and playing my AAC audio.
a loop
{
// int v=audio.getStreamVolume(AudioManager.MODE_NORMAL);
// int v=audio.getStreamVolume(AudioManager.STREAM_MUSIC);
int v=audio.getStreamVolume(AudioManager.STREAM_DTMF);
// Tried 3 settings above
Log.i(HiCardConstants.TAG, "Volume - "+v);
try{Thread.sleep(200);}
catch(InterruptedException ie){}
}
But only get a fixed value, not dynamic volume...
And I also found a class named Visualizer, but unfortunately, my target platform is Android 2.2 ... :-(
Any suggestions are welcome :-)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
经过日日夜夜,我发现了一个名为 ringdroid 的 Android 应用项目
可以解决我的问题。
它帮助我获得音频增益值数组,以便我可以用来绘制声波。
顺便说一句,根据我的经验,由于比特率太低,某些 .AMR 或 .MP3 无法正确解析......
After days and nights, I found that an Android app project called ringdroid
can solve my problem.
It helps me to get an audio gain value array, so that I can use to to draw my sound wave.
BTW, as my experience, some .AMR or .MP3 can't be parsed correctly, due to too low bitrate...