Ich implementiere einen Media-Player, der einen Stream von einem Remote-Computer spielt. Über meine App kann ich die entfernte Maschine steuern (z. B. Suche nach Sekunde). Funktioniert wie Charme, aber: Der Android Media Player puffert einige wahnsinnige 10-15 Sekunden (!!), was bedeutet, dass jeder Klick ('Suchen') 10-15 Sekunden dauert, bis er wirksam wird, obwohl es weniger als eine Sekunde dauert Daten kommen an.
Meine Frage: Gibt es eine Möglichkeit, dieses Caching zu kontrollieren (zu begrenzen)? Oder mache ich einfach etwas falsch? Bin ich der Einzige, der dieses Problem hat?
Mein Code ist sehr einfach:
%Vor%UPDATE: Ich verwende einen lokalen selbstgebauten Mini-HTTP-Server, um meinen Byte-Stream mit dem Android Media Player zu verbinden. Es scheint, dass Android DRM in diesem Fall verzögert / zwischengespeichert wird. Immer noch nicht ganz klar warum (und warum nicht, wenn ich eine Verbindung zu meinem IIS herstelle, der eine Datei hostet). Auch keine Ahnung wie man das umgehen kann.
Eingabe willkommen!
Danke! Daniel
Ok, inzwischen bin ich der Lösung näher gekommen. Die Ursache meines Problems ist Android DRM! (Nein, ich spiele keine geschützte Datei. Seine Standard-MP3).
DRM scheint in Android 3.1 eingeführt worden zu sein (ich habe auf einem Galaxy Tab 10.1 getestet). Es funktioniert gut mit dem Emulator (vielleicht ist DRM dort nicht implementiert?)
Irgendeine Idee, wie ich das deaktivieren oder beschleunigen kann? Es scheint einen 10-Sekunden-Timer irgendwo im Android-DRM-Impl zu geben, auf den gewartet wird - was auch immer, keine Ahnung. Mein Fehlerprotokoll:
%Vor%Probieren Sie dies aus. das wird dir definitiv helfen ::
%Vor%OnCreate ()
%Vor%Das Problem liegt möglicherweise nicht nur beim Android Media Player. Server, der Video streamt, sollte das Bedarfsformat unterstützen.
Wenn es mp4 ist, müssen Sie h264-pseudo-streaming Modul installieren (selbe für HLS) Wenn es MSS (Microsoft Smooth Streaming) ist - gibt es spezielle Module für IIS.
Nachdem der Benutzer 'seek' durchgeführt hat, bedeutet das, dass Native Player Bereichsanforderungen sendet, die vom Server unterstützt werden sollten. Nginx unterstützt sie standardmäßig, ISS & amp; Apache hat einige Probleme damit. Obwohl einfach konfigurierbar.
Eine Sache, die ich in den neueren Android-Versionen festgestellt habe, ist, dass es Probleme mit VBR-MP3-Dateien zu haben scheint. Es spielt sie ab, puffert aber viel zu viele Daten, bevor es startet. (3+ MB, die Mehrheit meiner Testdateien).
Eine (schlechte Hack) Problemumgehung besteht darin, den Header XING
aus den MP3-Dateien zu entfernen (hier werden die VBR-Informationen gespeichert). Dies scheint den Player auf einen einfacheren Algorithmus zurückgreifen zu lassen und die Wiedergabe für alle meine Dateien erfolgreich zu starten, nachdem nur 100kb gepuffert wurden ...