Android VideoView MediaPlayer OnInfoListener - Ereignisse nicht ausgelöst

8

Das folgende Quellcode-Snippet wird angegeben:

%Vor%

Ich streame HLS-Streams mit Android 3.x + -Geräten und versuche, einen Ladedialog zu verbergen, sobald die Pufferung abgeschlossen ist. Das Video-Streaming funktioniert, aber die Info-Ereignisse werden nie ausgelöst.

Irgendwelche Ideen?

    
Nabil 14.10.2012, 13:46
quelle

7 Antworten

2

Sie haben Recht, die Ereignisse werden nie ausgelöst. Dies ist ein bekannter HLS-Bug, den Google nicht beheben wird.

Dies gilt für die onInfo und die Pufferungsereignisse.

Siehe Ссылка und Ссылка

Entschuldigung!

    
Cade 07.08.2013 04:39
quelle
2

Ich bin mir nicht ganz sicher, was das OP verlangt, aber hier sind einige sehr frühe Informationen.

Ich würde mich nicht auf onPrepared verlassen. Ich finde es unzuverlässig.

Ich habe herausgefunden, dass die zwei nützlichsten Informationen für HLS-Streaming durch den MediaPlayer die Dauer des Videos und die Fortschrittsposition des Videos sind. Sie erhalten beide, indem Sie Fortschritts-Updates hören.

Wenn die Dauer größer als Null ist, wissen Sie, dass das Video wirklich vorbereitet ist und manipuliert werden kann (Scrub). Wenn sich die Fortschrittsposition ändert, wissen Sie, dass das Video gepuffert ist und mit der Wiedergabe begonnen hat. Dieser letzte Punkt funktioniert nur, wenn das Video natürlich abgespielt wird. Der MediaPlayer neigt dazu, ungenaue Informationen weiterzuleiten.

Diese Informationen sind meistens korrekt und können normalerweise als "ziemlich" zeitgemäß angesehen werden. Diese Aktualität variiert von Gerät zu Gerät.

    
javahead76 23.10.2013 03:25
quelle
2

Ich weiß es zu spät, aber posten es für die Benutzer immer noch auf der Suche nach der Lösung (Das funktionierte für mich):

%Vor%     
Nougat Lover 27.12.2016 13:27
quelle
1

onPrepared wird aufgerufen, wenn das MediaPlayer bereit ist, die Pufferung zu starten, nicht wenn das Video vollständig gepuffert ist. Es ist jedoch völlig normal, den Ladedialog innerhalb der Methode onPrepared zu schließen.

Auch MEDIA_INFO_BUFFERING_END wird verwendet wenn MediaPlayer die Wiedergabe nach dem Füllen von Puffern wieder aufnimmt , also denke ich nicht, dass es etwas sein sollte, um den Dialog zu schließen. Also sollte das funktionieren:

%Vor%     
Cristian 07.11.2012 21:32
quelle
0

Sie können OnPreparedListener in videoView festlegen, da es Ihr Objekt ist, aber wenn Sie die Quelle von VideoView werden Sie feststellen, dass der mMediaPlayer sein privates Mitglied ist, so dass Änderungen, die Sie von extern vornehmen, nicht darauf angewendet werden.

Gemäß Ihrer Anforderung benötigen Sie den Pufferungsstatus, damit Sie einen Thread oder Handler oder etwas haben können, so dass Sie Ihre Benutzeroberfläche aktualisieren können, um den Pufferstatus zu erhalten. Es gibt eine Methode

%Vor%     
Vishal Pawar 01.11.2012 12:23
quelle
0

Sie müssen nicht durch setOnInfoListener

gehen

durch Überschreiben der Methode setOnPreparedListener ist ausreichend. wie in der api-show

  

public void setOnPreparedListener (MediaPlayer.OnPreparedListener l)

     

Registrieren Sie einen Rückruf, der beim Laden der Mediendatei aufgerufen werden soll   bereit zu gehen.

Sie können also Ihr Dialogfeld innerhalb der setOnPreparedListener-Methode schließen

gefällt das

%Vor%     
Sruit A.Suk 06.11.2012 09:10
quelle
0

Wenn Sie das Laden jedes Mal anzeigen möchten, wenn es gepuffert wird (Anfangszeit oder nachfolgende Pufferunterläufe), stellen Sie sicher, dass es erneut angezeigt wird:

%Vor%

Also wird diese Ereignissequenz wie gewünscht funktionieren:

%Vor%

Aktualisierung:

Dies setzt voraus, dass die Info-Ereignisse funktionieren. Natürlich.

    
helios 02.07.2014 14:50
quelle