Even I am also looking for the same information. Please let me know, if you find some way to get the PCM data of a MP3 file
Thanks Yogesh bansal On Jun 20, 9:41 am, Asmishra <aashutosh.mis...@gmail.com> wrote: > I am trying to get thePCMdata of the mp3 files being played by > Android system. > > In the SDK I do not find any API of the Mediaplayer which lets me set > the data target (complement API of SetDataSource()) so that I can give > the path of a simple file in which I want to write thePCMdata before > it is being played on the DAC of my system. > > I thought of another way for the solution. Instead of setting the data > target if I am able to use the MediaRecoder to record thePCMdata of > the file being played on the DAC of the emulator I would be able to > achieve the desired result in other way; But the Problem which I am > finding in this approach is what to set the data source to the > mediarecoder? If I set MIC I get an exception. > > Here is the code :- > > ===============================> CODE STARTS <===================== > public class Hello extends Activity > { > //All buttons > private static final String LOG_TAG = "AudioRecordTest"; > private static String mFileName = null; > private RecordButton mRecordButton = null; > private MediaRecorder mRecorder = null; > private PlayButton mPlayButton = null; > private MediaPlayer mPlayer = null; > > private void onRecord(boolean start) { > if (start) { > startRecording(); > } else { > stopRecording(); > } > } > > private void onPlay(boolean start) { > if (start) { > startPlaying(); > } else { > stopPlaying(); > } > } > > private void startPlaying() { > mPlayer = new MediaPlayer(); > try { > mPlayer.setDataSource(mFileName); > mPlayer.prepare(); > mPlayer.start(); > } catch (IOException e) { > Log.e(LOG_TAG, "prepare() failed"); > } > } > > private void stopPlaying() { > mPlayer.release(); > mPlayer = null; > } > > private void startRecording() { > mRecorder = new MediaRecorder(); > mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); > > mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); > mRecorder.setOutputFile(mFileName); > mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); > > try { > mRecorder.prepare(); > } catch (IOException e) { > Log.e(LOG_TAG, "prepare() failed"); > } > > mRecorder.start(); > } > > private void stopRecording() { > mRecorder.stop(); > mRecorder.release(); > mRecorder = null; > } > > class RecordButton extends Button { > boolean mStartRecording = true; > > OnClickListener clicker = new OnClickListener() { > public void onClick(View v) { > onRecord(mStartRecording); > if (mStartRecording) { > setText("Stop recording"); > } else { > setText("Start recording"); > } > mStartRecording = !mStartRecording; > } > }; > > public RecordButton(Context ctx) { > super(ctx); > setText("Start recording"); > setOnClickListener(clicker); > } > } > > class PlayButton extends Button { > boolean mStartPlaying = true; > > OnClickListener clicker = new OnClickListener() { > public void onClick(View v) { > onPlay(mStartPlaying); > if (mStartPlaying) { > setText("Stop playing"); > } else { > setText("Start playing"); > } > mStartPlaying = !mStartPlaying; > } > }; > > public PlayButton(Context ctx) { > super(ctx); > setText("Start playing"); > setOnClickListener(clicker); > } > } > > //public AudioRecordTest() { > public Hello() { > mFileName = > Environment.getExternalStorageDirectory().getAbsolutePath(); > mFileName += "/audiorecordtest.3gp"; > } > > @Override > public void onCreate(Bundle icicle) { > super.onCreate(icicle); > > LinearLayout ll = new LinearLayout(this); > mRecordButton = new RecordButton(this); > ll.addView(mRecordButton, > new LinearLayout.LayoutParams( > ViewGroup.LayoutParams.WRAP_CONTENT, > ViewGroup.LayoutParams.WRAP_CONTENT, > 0)); > mPlayButton = new PlayButton(this); > ll.addView(mPlayButton, > new LinearLayout.LayoutParams( > ViewGroup.LayoutParams.WRAP_CONTENT, > ViewGroup.LayoutParams.WRAP_CONTENT, > 0)); > setContentView(ll); > } > > @Override > public void onPause() { > super.onPause(); > if (mRecorder != null) { > mRecorder.release(); > mRecorder = null; > } > > if (mPlayer != null) { > mPlayer.release(); > mPlayer = null; > } > } > > } > > ======================> CODE ENDS < =================== > > Kindly help me in getting thePCMdata of the mp3 files being played. > Also I would like to know how to get the SampleRate etc. in order to > get thePCMdata thus obtained? .i.e How to determine the playing > params of aPCMfile? > > Thanks!! -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en