Problembehebung


Warum kann ich in der Demo-App nicht auf lokale Dateien zugreifen?

Die Erzwingung des begrenzten Speichers ab Android 11 (API-Level 30) verhindert den direkten Zugriff auf das Dateisystem. Für manuelle Tests während der Entwicklung ist es möglich, auf lokale Dateien zuzugreifen. Dazu fügen Sie im Manifest der Demo-App die Berechtigung „Externen Speicher verwalten“ hinzu:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

Gewähren Sie dann die Berechtigung über ADB:

adb shell appops set --uid androidx.media3.demo.transformer \
    MANAGE_EXTERNAL_STORAGE allow

Warum schlägt der Export auf einem bestimmten Gerät fehl?

Melden Sie ein Problem in der Media3-Problemverfolgung und geben Sie genügend Informationen an, um das Problem zu reproduzieren. Der Bibliothek können Abhilfen für gerätespezifische Probleme hinzugefügt werden, um die Kompatibilität im Laufe der Zeit zu verbessern.

Unterstützt Transformer die Umwandlung (oder Aufzeichnung) von Remote-Medien?

Transformer unterstützt Progressive-Remote-Streams, einschließlich Mediendateicontainer wie MP4.

Unter sehr schlechten Netzwerkbedingungen kann der Export fehlschlagen, da das Zwischenspeichern von Remote-Medien zu lange Prüfungen im Muxer auslöst, die erkennen sollen, dass die Pipeline hängen geblieben ist. Sie können das Standardverhalten überschreiben, indem Sie maxDelayBetweenMuxerSamplesMs für Transformer.Builder festlegen:

Kotlin

Transformer.Builder(context)
    .setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET)
    .build()

Java

new Transformer.Builder(context)
    .setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET)
    .build();

Durch die Übergabe von C.TIME_UNSET wird das Zeitlimit vollständig entfernt. Wenn Ihre Anwendung jedoch auf Chipsätzen ausgeführt wird, in denen MediaCodec hängen bleiben kann, sollten Sie ein größeres Zeitlimit ungleich null festlegen.

Unterstützt der Transformer die 8K-Eingabe?

Transformer ist formatunabhängig implementiert, sodass die Verarbeitung von 8K-Videos nicht eingeschränkt wird. Die Hardwarefunktionen des Geräts können jedoch bedeuten, dass der Export nicht erfolgreich ist. Selbst auf Geräten, die 8K erfassen können, ist es beispielsweise nicht möglich, ein 8k-Video zu decodieren und neu zu codieren, da die verfügbaren Hardware-Codec- oder RAM-Ressourcen überschritten werden.

Welcher Zusammenhang besteht zwischen Transformer und der plattformkompatiblen Medientranscodierung?

Die kompatible Medientranscodierung ist eine Android-Plattformfunktion von Android 12 (API-Level 31), die Medien mit einer Länge von bis zu einer Minute in von der App unterstützte Formate konvertiert. Wenn Sie diese Funktion aktivieren, wird die Mediendatei in einem inkompatiblen Format bei Bedarf transkodiert. Das Ergebnis wird dann für spätere Lesevorgänge im Cache gespeichert.

Transformer unterstützt auch die Formatkonvertierung, ist jedoch als Supportbibliothek verfügbar und die App hat volle Kontrolle über den Transcodierungsvorgang.

Wie kann ich die Exportlatenz verringern oder den Durchsatz erhöhen?

Transformer verwendet MediaCodec für die hardwarebeschleunigte Decodierung und Codierung und OpenGL für die Verarbeitung von Videoframes. Basierend auf unseren Messungen mit typischen Geräten ist der begrenzende Faktor für den Durchsatz von Transformer der Durchsatz des Hardware-MediaCodec-Encoders für Anwendungsfälle ohne die Verarbeitung komplexer Effekte. Dies wirkt sich wahrscheinlich in gleicher Weise auf andere Implementierungen aus. Das mit der Plattform kompatible Transcodierungsfeature hat beispielsweise eine ähnliche Leistung wie Transformer.

Die Debug-Vorschau der Demo-App reduziert den Durchsatz erheblich. Deaktivieren Sie daher die Vorschaufunktion beim Testen mit einem Release-Build der Demo-App, um eine realistische Vorstellung von der Leistung zu erhalten.