Android.media.MediaCodec выдает исключение в queueInputBuffer ()

Мне нужно преобразовать аудиофайл из PCM в AMR, и я попытался сделать это с помощью MediaCodec из Android API 16+. Я получил IllegalStateException при вызове queueInputBuffer:

07-16 19:40:55.519: E/AndroidRuntime(19227): FATAL EXCEPTION: main 07-16 19:40:55.519: E/AndroidRuntime(19227): java.lang.IllegalStateException 07-16 19:40:55.519: E/AndroidRuntime(19227): at android.media.MediaCodec.queueInputBuffer(Native Method) 

Вот мой код:

  private static MediaCodec mediaCodec; private static void initMediaCodec() { mediaCodec = MediaCodec.createEncoderByType("audio/3gpp"); MediaFormat mediaFormat = MediaFormat.createAudioFormat("audio/3gpp", 8000, 1); mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 12800); mediaFormat.setInteger(MediaFormat.KEY_SAMPLE_RATE, 8000); mediaFormat.setInteger(MediaFormat.KEY_CHANNEL_COUNT, 1); mediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); mediaCodec.start(); } <...> initMediaCodec(); ByteBuffer[] inputBuffers = mediaCodec.getInputBuffers(); ByteBuffer[] outputBuffers = mediaCodec.getOutputBuffers(); int inputBufferIndex = mediaCodec.dequeueInputBuffer(-1); if (inputBufferIndex >= 0) { ByteBuffer inputBuffer = inputBuffers[inputBufferIndex]; inputBuffer.clear(); inputBuffer.put(fileBuffer); //fileBuffer is ByteBuffer from my input audio file mediaCodec.queueInputBuffer(inputBufferIndex, 0, fileBuffer.capacity(), 0, 0); } <...> 

Я упомянул, что inputBuffers имеет 4 элемента в нем с емкостью 320, мой буфер звукового файла может иметь емкость 96000+.

Любая помощь будет оценена. Благодаря!

    Intereting Posts
    Как получить скорость прокрутки в ListView? Добавление текста в значок уведомления Использование библиотеки Joda-Time для преобразования String в формат DateTime в API задач Google Как искать строку в google с помощью браузера по умолчанию Eclipse: проверьте, что aapt присутствует в «.. \ sdk \ build-tools \ 23.0.0_rc1 \ aapt.exe" Android API-23: замена InetAddressUtils Строка Json для объектов области, самый быстрый способ Как определить длительное касание на Android? Как показать логотип, иконку, заголовок, субтитры панели инструментов, когда они завернуты в CollapsingToolbarLayout? Как включить 2 варианта сербского языка? С латинскими буквами и кириллическими буквами Чтение данных SharedPreferences в фрагменте, внутри FragmentActivity Коснитесь события в Phonegap Дублирование файлов во время сборки приложения (после обновления градиента) Android, AsyncTask, длительные процессы и изменения ориентации Как я получаю URL из веб-просмотра при нажатии