Потоковое аудио от URL в использовании Android MediaPlayer?

Я пытался передать mp3 потоком по http, который использование Android создало в классе MediaPlayer. Документация предложила бы мне, чтобы это было столь же легко как:

MediaPlayer mp = new MediaPlayer();
mp.setDataSource(URL_OF_FILE);
mp.prepare();
mp.start();

Однако я получаю следующее неоднократно. Я попробовал различные URL также. Не говорите мне, что потоковая передача не работает над mp3.

E/PlayerDriver(   31): Command PLAYER_SET_DATA_SOURCE completed with an error or info PVMFErrNotSupported
W/PlayerDriver(   31): PVMFInfoErrorHandlingComplete
E/MediaPlayer(  198): error (1, -4)
E/MediaPlayer(  198): start called in state 0
E/MediaPlayer(  198): error (-38, 0)
E/MediaPlayer(  198): Error (1,-4)
E/MediaPlayer(  198): Error (-38,0)

Любая справка, очень ценившая, благодарит S

86
задан Jonik 27 January 2014 в 22:15
поделиться

3 ответа

У меня была такая же ошибка, как и у вас, и оказалось, что с кодом все в порядке. Проблема заключалась в том, что веб-сервер отправлял неправильный заголовок Content-Type.

Попробуйте wirehark или что-то подобное, чтобы узнать, какой тип контента отправляет веб-сервер.

2
ответ дан 24 November 2019 в 08:05
поделиться

Нет вызова mp.start с OnPreparedListener, чтобы избежать нулевого состояния в журнале ..

1
ответ дан 24 November 2019 в 08:05
поделиться

Android MediaPlayer изначально не поддерживает потоковую передачу MP3 до версии 2.2. В более старых версиях ОС, по-видимому, исходно передается только 3GP. Вы можете попробовать код pocketjourney, хотя он старый (здесь есть новая версия), и у меня возникли проблемы с его закреплением — он заикался всякий раз, когда заполнял буфер.

Приложение NPR News для Android имеет открытый исходный код и использует локальный прокси-сервер для обработки потоковой передачи MP3 в версиях ОС до 2.2. Вы можете увидеть соответствующий код в строках 199-216 (r94) здесь: http://code.google.com/p/npr-android-app/source/browse/Npr/src/org/npr/android. /news/PlaybackService.java?r=7cf2352b5c3c0fbcdc18a5a8c67d836577e7e8e3

А это класс StreamProxy: http://code.google.com/p/npr-android-app/source/browse/Npr/src/org /npr/android/news/StreamProxy.java?r=e4984187f45c39a54ea6c88f71197762dbe10e72

Приложение NPR также по-прежнему иногда получает «ошибку (-38, 0)» во время потоковой передачи. Это может быть проблема с потоками или проблема с изменением сети. Проверьте систему отслеживания ошибок на наличие обновлений.

35
ответ дан 24 November 2019 в 08:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: