Недавно я столкнулся с некоторыми проблемами потоков потокового AAC + с Android MediaPlayer
. Что касается документации, должна быть поддержка для потоковой передачи AAC + в Android 4.1. (Тестовое устройство представляет собой Nexus 2 с Android 4.2.2)
Я нашел некоторые связанные вопросы (здесь <, , здесь), но они в основном связаны со старыми версиями Android или датированы до выпуска 4.1. Я нашел AACPlayerAndroid libary, но там вы должны приобрести лицензию.
Если я попытаюсь передать поток AACPlus, MediaPlayer выбрасывает MediaPlayerError (1,-2147483648)
, который определяется как "неподдерживаемый формат носителя". Однако, если я запускаю тот же AAC + Stream в эмуляторе, он работает нормально!
То, что я пробовал до сих пор:
-
Простой код в эмуляторе работает?!? (почему... возможно, кодек поддерживается на локальной машине?)
-
тестирование двух других устройств с ошибками 4.1 или 4.2 также
-
установить поток AAC + с ручным заголовком и
setDataSource(String path)
, который не работает (изменение HTTP-заголовка также не выполняется) -
создать новый проект SimpleMediaPlayer → не удается
-
пытается проверить сетевой трафик, если устройство Android перенаправлено на неправильный URL-адрес. Фактически я подключил устройство к
Charles
с помощьюProxy
, но смог контролировать Android-браузер. Тем не менее, я считаю, что перенаправление правильное!
Вот моя реализация setDataSource моего Streaming.class
public AmplifyMediaPlayer(PlayerStationObject playerStationObject, Context context) {
super();
this.setAudioStreamType(AudioManager.STREAM_MUSIC);
this.mCurrentStationObject = playerStationObject;
try {
//AAC+ TestStream #1: NOT WORKING
//Uri uri = Uri.parse("http://up-gc2.webnow.com.br/alpha.aac");
//AAC+ TestStream #2: NOT WORKING
//Audio codec: 64 kbit/s 44.1 kHz AAC+, 128 kbit/s 44.1 kHz MP3
//Uri uri = Uri.parse("http://relay.publicdomainproject.org:80/jazz_swing.aac ");
//Setting HTTP header for fixing some issues with normal setDataSource Header from Android
//User-Agent "iTunes" was set to force re-direct to shoutcast streaming url
Map<String, String> headers = new HashMap<String, String>();
headers.put("User-Agent", "iTunes");
setDataSource(context, uri, headers);
//AAC Codec works fine...
//setDataSource("http://fri.net.pl:8000/fri");
prepareAsync();
//...
Итак, у меня возникают следующие вопросы:
Почему я не могу играть в ACC + Stream на Android 4.1 и выше, даже если они должны поддерживаться?
У кого-нибудь есть ACC + Stream, который он успешно передает с MediaPlayer Class с Android? (просто чтобы проверить, есть ли что-то с моей интеграцией с проигрывателем)
Если ACC + не поддерживается, знаете ли вы хорошую библиотеку или примерный проект, как они решили проблему?
Спасибо или любые предложения!
Другие теги AAC +, которые я тестировал: http://jam-aacp.rautemusik.fm
ИЗМЕНИТЬ До сих пор я закончил: это невозможно. Библиотека AACP-декодера является хорошим решением, но пока не стабильна. Надежда Android будет поддерживать это в ближайшее время. Если вы не согласны, ПОЖАЛУЙСТА, ОБРАТИТЕ!