Ошибка потокового аудио Android Wav: Ошибка подготовки MediaPlayer: status = 0x1 - PullRequest
7 голосов
/ 13 июля 2011

Мы транслируем аудио через http из ffserver / ffmpeg в Angstrom Linux. Аудиокодек ffmpeg - это 16-разрядный байтовый код с порядковым порядком байтов, подписанный PCM. Формат потока ffmpeg - "wav". Утверждается, что оба они поддерживаются на Android здесь: http://developer.android.com/guide/appendix/media-formats.html#core

VLC находит и воспроизводит поток без проблем. Под VLC "Детали кодека" написано: Тип: Аудио, Кодек: PCM S16 LE (araw) Каналы: стерео Частота дискретизации: 48000 Гц Биты на образец: 16

Мы создали простое тестовое приложение ниже, чтобы взять и воспроизвести поток в Android и получить эту ошибку: java.io.IOException: подготовить не удалось .: статус = 0x1

Мы проверили заголовок HTTP, используя HTTP Debugger Pro. Элементы заголовка ответа (при обычной игре через VLC): [Ответ]: HTTP / 1.0 200 OK Прагма: без кеша Тип контента: аудио / x-wav

Мы искали в Интернете помощь по этому вопросу более двух дней и пришли с пустыми руками. Любая помощь будет высоко оценена.

------------ ТЕСТ-ПРИЛОЖЕНИЕ ------------------------ пакет com.shaneahern.streamtest; импорт java.io.IOException; импорт android.app.Activity; импорт android.media.AudioManager; импорт android.media.MediaPlayer; импорт android.os.Bundle; импорт android.util.Log;

открытый класс BareBonesStreamTestActivity расширяет Activity { @Override public void onCreate (BundlevedInstanceState) { super.onCreate (savedInstanceState);

    String streamUrl = "http://192.168.24.123:8080/test.wav"; 

    MediaPlayer mp = new MediaPlayer(); 
    Log.i("BareBonesStreamTestActivity", "MediaPlayer created"); 

    try { 
        mp.setDataSource(streamUrl); 
        Log.i("BareBonesStreamTestActivity", "setDataSource to " + streamUrl); 

        mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
        Log.i("BareBonesStreamTestActivity", "setAudioStreamType to AudioManager.STREAM_MUSIC"); 

        mp.prepare(); 
        Log.i("BareBonesStreamTestActivity", "prepare succeeded, calling start"); 

        mp.start(); 
    } catch (IllegalStateException e) { 
        Log.i("BareBonesStreamTestActivity", "prepare failed with IllegalStateException"); 
        e.printStackTrace(); 
    } catch (IOException e) { 
        Log.i("BareBonesStreamTestActivity", "prepare failed with IOException"); 
        e.printStackTrace(); 
    } 
} 

}

------------ ЖУРНАЛ ОШИБКИ ------------------------

I/BareBonesStreamTestActivity(  727): MediaPlayer created 
I/StagefrightPlayer(   33): setDataSource('http://192.168.24.123:8080/ test.wav') 
I/BareBonesStreamTestActivity(  727): setDataSource to http://192.168.24.123:8080/test.wav 
I/BareBonesStreamTestActivity(  727): setAudioStreamType to AudioManager.STREAM_MUSIC 
E/MediaPlayer(  727): error (1, -2147483648) 
I/BareBonesStreamTestActivity(  727): prepare failed with IOException 
W/System.err(  727): java.io.IOException: Prepare failed.: status=0x1 
W/System.err(  727):     at android.media.MediaPlayer.prepare(Native Method) 
W/System.err(  727):     at com.shaneahern.streamtest.BareBonesStreamTestActivity.onCreate(BareBonesStr eamTestActivity.java: 30) 
W/System.err(  727):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: 1047) 
W/System.err(  727):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2627) 
W/System.err(  727):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2679) 
W/System.err(  727):     at android.app.ActivityThread.access $2300(ActivityThread.java:125) 
W/System.err(  727):     at android.app.ActivityThread $H.handleMessage(ActivityThread.java:2033) 
W/System.err(  727):     at android.os.Handler.dispatchMessage(Handler.java:99) 
W/System.err(  727):     at android.os.Looper.loop(Looper.java:123) 
W/System.err(  727):     at android.app.ActivityThread.main(ActivityThread.java:4627) 
W/System.err(  727):     at java.lang.reflect.Method.invokeNative(Native Method) 
W/System.err(  727):     at java.lang.reflect.Method.invoke(Method.java:521) 
W/System.err(  727):     at com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:868) 
W/System.err(  727):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
W/System.err(  727):     at dalvik.system.NativeStart.main(Native Method) 

Ответы [ 2 ]

1 голос
/ 22 апреля 2016

Хотя уже поздно, я также получил ту же ошибку, когда работал с MediaPlayer.

После некоторых НИОКР я нашел источник проблемы.На будущее я записываю его, чтобы ответить на область

В моем случае это произошло потому, что я дал UnSupported File to MediaPlayer.

Итак, если это произойдет, проверьте, что данный файлверно.

Другие причины:

  1. Ошибка пути к файлу, неверный URI или каталог
  2. РазрешениеЗадача
1 голос
/ 05 декабря 2011

Думаю, вы захотите взглянуть на: Использование AudioTrack для воспроизведения WAV-файла

Еще одна полезная ссылка

Я сам скачал сырой поток, и он прекрасно работает.

...