Friday 15 June 2012

java - Android - create waveform of the audio file (OGG) -



java - Android - create waveform of the audio file (OGG) -

how can create simple waveform of ogg file (like in ringdroid)? there simple way?

i found source code of ringdroid (https://code.google.com/p/ringdroid/) it´s not back upwards ogg format. i´m using android 4.0+.

is there easy way it?

thanks advice.

edit: want create (waveform whole song)

i hope, it´s clear. if have questions, please ask.

you can utilize visualizer waveform data

mediaplayer mediaplayer = new mediaplayer(); . . . int audiosessionid = mediaplayer.getaudiosessionid(); // enable equalizer if waveform affected device volume. // equalizer equalizer = new equalizer(0, audiosessionid); // equalizer.setenabled(true); // need android.permission.record_audio. visualizer visualizer = new visualizer(audiosessionid); visualizer.setcapturesize(visualizer.getcapturesizerange()[1]); visualizer.setdatacapturelistener(new visualizer.ondatacapturelistener() { public void onwaveformdatacapture(visualizer visualizer, byte[] bytes, int samplingrate) { // send bytes (waveform) custom ui view show it. } public void onfftdatacapture(visualizer visualizer, byte[] bytes, int samplingrate) {} }, visualizer.getmaxcapturerate() / 2, true, false); visualizer.setenabled(true); mediaplayer.setoncompletionlistener(new mediaplayer.oncompletionlistener() { public void oncompletion(mediaplayer mediaplayer) { visualizer.setenabled(false); } }); // todo :: not forget release visualizer onpause.

check view http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/4.4.4_r1/com/example/android/apis/media/audiofxdemo.java#visualizerview on how draw waveform info retrieved visualizer

if (mpoints == null || mpoints.length < mbytes.length * 4) { mpoints = new float[mbytes.length * 4]; } mrect.set(0, 0, getwidth(), getheight()); (int = 0; < mbytes.length - 1; i++) { mpoints[i * 4] = mrect.width() * / (mbytes.length - 1); mpoints[i * 4 + 1] = mrect.height() / 2 + ((byte) (mbytes[i] + 128)) * (mrect.height() / 2) / 128; mpoints[i * 4 + 2] = mrect.width() * (i + 1) / (mbytes.length - 1); mpoints[i * 4 + 3] = mrect.height() / 2 + ((byte) (mbytes[i + 1] + 128)) * (mrect.height() / 2) / 128; } canvas.drawlines(mpoints, mforepaint);

java android audio ogg

No comments:

Post a Comment