Android 4.0.4 MediaPlayer bereitet Probleme mit RTSP-URLs vor

8

Ich habe ein seltsames Problem mit einer Video-Streaming-Anwendung, an der ich gerade arbeite. Das tatsächliche Streaming von Video / Audio funktioniert auf allen meinen Testgeräten einwandfrei. Auf Geräten 4.0+ scheint prepare () jedoch bei Verwendung einer RTSP-URL augenblicklich zurückzukehren (dies verursacht ein Problem, das den Benutzern während des Ladens eines Videos eine angemessene Rückmeldung gibt und einige andere Systeme stört) / p>

Unten ist der Codeblock, in dem ich meinen MediaPlayer initialisiere und einrichte, aber behalte ein paar Dinge im Hinterkopf:

  • Meine initPlayer-Methode wird von einer AsyncTask aufgerufen.
  • Das Video wird schließlich korrekt abgespielt, aber die Vorbereitung der Rücksendung erzeugt beim Laden des Videos sofort eine fehlende Rückmeldung an den Benutzer.
  • Während des gesamten Prozesses treten keine Fehler auf.
  • start () wird auf dem MediaPlayer über die onPrepared-Methode in meinem OnPreparedListener aufgerufen, was offensichtlich zu einem Problem wird, wenn prepare () zurückkehrt, bevor es tatsächlich abgespielt werden kann.
  • HTTP-Streams scheinen gut zu funktionieren, und auf jedem Testgerät unter 4.0 tritt das Problem nicht auf.

Ich habe versucht, dies für eine lächerliche Zeit zu beheben, und konnte niemanden finden, der auf dieses Problem gestoßen ist. Irgendwelche Ideen würden sehr geschätzt werden.

%Vor%     
bread 21.09.2012, 20:52
quelle

1 Antwort

0

Verwenden Sie mp.prepareAsync() , da dies für Streaming-Medien besser ist . Verwenden Sie prepare() Blöcke, bis der MediaPlayer zur Wiedergabe bereit ist oder eine IllegalStateException auftritt. In android 4 (ICS) ist das Blockieren auf einem beliebigen UI-Thread noch strenger und kann dazu führen, dass ein ANR-Dialog (Aktivität reagiert nicht) angezeigt wird.

Ein letzter Gedanke, versuchen Sie, e.printStackTrace(); in Android-Apps zu vermeiden. Verwenden Sie stattdessen Log.e("TAG_STRING", e.getMessage(), e); , um Fehler an das Android-Protokollierungssystem zu drucken, auf das Sie über logcat zugreifen können .

Alles in allem sollte es ungefähr so ​​aussehen:

%Vor%     
petey 06.09.2013 14:52
quelle