Di recente ho riscontrato alcuni problemi di streaming streaming AAC + con Android MediaPlayer
. Regarding to the documentation, ci dovrebbe essere il supporto per lo streaming AAC + in Android 4.1. (Dispositivo di prova è un Nexus 2 con Android 4.2.2)Android: lo streaming radio AAC + non funziona con MediaPlayer (collegamenti Android 4.2.2/Shoucast)
ho trovato alcune domande correlate (controllare here, here o here), ma essi sono principalmente correlati alle versioni più vecchie di Android o datato prima del rilascio della 4.1. Ho trovato il AACPlayerAndroid libary, ma non è necessario acquistare una licenza ..
se provo lo streaming di un flusso di aacPlus, il MediaPlayer getta MediaPlayerError (1,-2147483648)
, che viene definita come "formato di carta non supportata". Tuttavia, se avvio lo stesso streaming AAC + in emulatore, funziona correttamente!
quello che ho provato finora:
cercando stesso codice in opere emulatore?!? (Whyever .. magari codec supportato alla macchina locale?)
testare altri due dispositivi con 4.1 o 4.2 non riesce così
set AAC + ruscello con intestazione manuale e con
setDataSource(String path)
, che non funziona (cambia intestazione http fallisce anche)istituito un nuovo progetto SimpleMediaPlayer -> fallisce troppo
cercando di controllare il traffico di rete, se il dispositivo Android viene reindirizzato a un URL sbagliato. In realtà ho ottenuto il dispositivo collegato a
Charles
utilizzando unProxy
, ma era solo in grado di monitorare il browser Android. Comunque penso che il reindirizzamento sia corretto!
Qui è la mia realizzazione del setDataSource del mio 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();
//...
Quindi, in realtà sto avendo seguenti domande:
Perché non sono in grado di svolgere un ACC + Stream Android 4.1 e versioni successive, anche se dovrebbero essere supportati?
Qualcuno ha un flusso ACC +, che riesce a trasmettere correttamente con la classe MediaPlayer di Android? (solo per verificare, se c'è qualcosa con l'integrazione del mio lettore)
Se ACC + non è supportato, conosci una buona libreria o un progetto di esempio da guardare, come hanno risolto il problema?
Grazie o eventuali suggerimenti o consigli!
Altri AAC + Streams ho provato: http://jam-aacp.rautemusik.fm
EDIT Finora, ho finito con: non è possibile. La libreria decodificatore AACP è una buona soluzione, ma non è ancora stabile. Spero che Android lo supporti presto. Se non sei d'accordo, PER FAVORE COMMENTI!
aacPlus ** decodifica ** è stato in Android molto prima di 4.1. Alcuni dei codec di Android sono (o possono essere) dipendenti dall'hardware. Se il tuo codice funziona nell'emulatore ma non su un dispositivo reale, potresti aver trovato un caso in cui il tuo dispositivo supporta il codec hardware per AAC, ma probabilmente non per il tuo stream a causa di alcune caratteristiche specifiche che potrebbe avere. Suggerirei di provare su alcuni dispositivi diversi. – Brad