2017-08-22 4 views
0

Ich habe diesen Anwendungsfall, wo Video von MediaPlayer an zwei Surface s geliefert werden muss. Leider fehlt der gesamten Android Surface API diese Funktionalität (oder zumindest, nachdem ich die Entwickler-Site studiert habe, kann ich sie nicht finden).Mehrere Android-Oberfläche Verbraucher - Video-Wiedergabe auf zwei Oberflächenansichten

Ich hatte einen simillar Anwendungsfall, wo das Video von einem benutzerdefinierten Kameramodul produziert wurde, aber nach einer leichten Änderung konnte ich Bitmap von der Kamera abrufen, also habe ich lockCanvas, drawBitmap und unlockAndPost auf zwei Oberflächen . Mit MediaPlayer kann ich Bitmap nicht abrufen und Wiedergabe mit dem richtigen Timing beibehalten.

Auch ich habe versucht, Allocation für diesen Zweck zu verwenden, mit einer Zuordnung als USAGE_IO_INPUT, zwei als USAGE_IO_OUTPUT, und mit IoReceive, copyFrom, ioSend Methoden. Aber es war auch eine Sackgasse. Aus unbekannten Gründen, sehr instabil render Motor auf meine Plattform ist, ich habe wie zahlreiche Fehler hatte:

android.renderscript.RSInvalidStateException: Calling RS with no Context active. 

wenn Kontext RenderScript.create bestanden war diese von Anwendungsklasse oder

Failed loading RS driver: dlopen failed: could not locate symbol .... falling back to default 

(Ich habe den vollen Log irgendwo verloren ...). Und am Ende konnte ich keinen geeigneten Input Allocation-Typ erstellen, um mit MediaPlayer kompatibel zu sein. Aufgrund der erwähnten Fehler bei RenderScript auf meiner Plattform würde ich dies als letzten Ausweg betrachten, um dieses Problem zu lösen.

Also, abschließend: Wie Video (von MP4-Datei) auf zwei Oberflächen zu spielen? Dieses Video muss synchron sein. Auch generische Frage, wie Video auf #X Surface's, die dynamisch hinzugefügt werden können, während der Wiedergabe wiedergegeben wird?

Antwort

0

Ich habe mein Problem gelöst, indem ich mehrere Instanzen von MediaPlayer mit derselben Videodateiquelle habe. Wenn ich grundlegende Spieleroperationen wie Pause/Spiel/Suche mache, mache ich sie einfach bei jedem Spieler.

Verwandte Themen