MediaExtractor throws an IllegalArgumentException when used with a wav file

I am using Android MediaExtractor as follows:

MediaExtractor extractor = new MediaExtractor();
extractor.setDataSource("path/to/my/wav/file.wav");
extractor.selectTrack(0);

ByteBuffer inputBuffer = codec.getInputBuffer(inputBufferIndex);
int sampleSize =  extractor.readSampleData(inputBuffer, 0);

InputBuffer is provided by MediaCodec, which is configured as AAC Encoder. The goal is to convert the wave file to aac. The above code is, of course, shortened, but I traced the error to the last line.

This also happens only when using MediaExtractor with a wav file. For example, I used .m4a instead, and everything worked fine.

The MediaExtractor documentation says:

MediaExtractor makes it easy to extract demultiplexed, typically encoded media data from a data source.

"typically encdoded" does not preclude audio encoding without PCM encoding .... right? Someone has tried this before or knows another stable (!) Way:

  • wav ( 44- 46- )?
  • wav aac Android?

UPDATE

logcat:

W/System.err: java.lang.IllegalArgumentException
W/System.err:     at android.media.MediaExtractor.readSampleData(Native Method)
W/System.err:     at com.myproject.android.audiosandbox.convert.MediaEncoder2.encodeLollipopStyle(MediaEncoder2.java:247)
W/System.err:     at com.myproject.android.audiosandbox.convert.MediaEncoder2.encodeSong(MediaEncoder2.java:119)
W/System.err:     at com.myproject.android.audiosandbox.convert.MediaEncoder2.encode(MediaEncoder2.java:70)
W/System.err:     at com.myproject.android.audiosandbox.fragments.AudioConvertFragment$1.onClick(AudioConvertFragment.java:40)
W/System.err:     at android.view.View.performClick(View.java:4763)
W/System.err:     at android.view.View$PerformClick.run(View.java:19821)
W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err:     at android.os.Looper.loop(Looper.java:135)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5272)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at java.lang.reflect.Method.invoke(Method.java:372)
W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)

API 16, MediaMuxer ( API 18).

+4
1

, "" " ", MediaExtractor, , wav , . WAV , FileInputStream 44- .

, : https://gist.github.com/muetzenflo/3e83975aba6abe63413abd98bb33c401

, , . , , MediaCodec Android.

+4

All Articles