2017-03-20 2 views
0

Auf meinem Targeting-Gerät muss ich ExoPlayer zwingen, einen bestimmten Codec zu verwenden, während Tests, wenn ich die getDecoderInfo() Funktion der MediaCodecSelector DEFAULT-Implementierung ändern, funktionieren die Dinge gut.ExoPlayer zur Verwendung benutzerdefinierter MediaCodecSelector

Aber für das echte Produkt möchte ich nicht die Quelle des ExoPlayer ändern. Ich habe einen Post gesehen, in dem Sie sagten, Sie könnten Ihren eigenen MediaCodecSelector implementieren, aber ich konnte nicht herausfinden, wie.

Wenn ich zu SimpleExoPlayer Unterklasse bin, da die Verwendung von MediaCodecSelector.DEFAULT fest in buildVideoRenderers() von SimpleExoPlayer ist, denke ich, buildVideoRenderers() zu überschreiben, aber ich habe keinen Zugriff auf die privaten Eigenschaften, und selbst wenn ich es hätte, würde es mit doppeltem Code enden.

Oder wenn ich ExoPlayer implementieren soll, scheint es auf noch mehr private Klassen abhängig zu sein.

Ich nehme an, der Standard Weg, es zu tun ist keines der oben genannten.

+0

Ich denke, der Standard Weg mit dem Exoplayer ist es, wenn Sie müssen. Können Sie erklären, welche Probleme Sie beim Überschreiben von BuildVideoRenderers haben? Vielleicht hilft es, wenn Sie genauer erklären, welche genauen Probleme Sie lösen möchten. – Okas

Antwort

0

Ich endete mit der folgenden Factory-Funktion von ExoPlayerFactory: public static ExoPlayer newInstance(Renderer[] renderers, TrackSelector trackSelector). Wo ich die Renderer mit meiner eigenen MediaCodecSelector erstellen.

Dann ist nur Unterschied, wie man Oberflächenansicht einrichtet, und sendMessage vom Typ MSG_SET_SURFACE funktioniert für mich.

Verwandte Themen