Fehlerbehebung


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

Die Erzwingung von „Begrenzter Speicher“ ab Android 11 (API-Level 30) verhindert den direkten Dateisystemzugriff. Für manuelle Tests während der Entwicklung ist es möglich, auf lokale Dateien zuzugreifen, indem Sie die Berechtigung „externen Speicher verwalten“ im Manifest der Demo-App hinzufügen:

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

Erteilen 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?

Bitte melden Sie ein Problem in der Media3-Problemverfolgung und geben Sie genügend Informationen an, damit das Problem reproduziert werden kann. Die Bibliothek kann mit Workarounds für gerätespezifische Probleme ergänzt werden, um die Kompatibilität im Laufe der Zeit zu verbessern.

Unterstützt Transformer die Transformation (oder Aufnahme) von Remote-Media?

Transformer unterstützt progressive Streams, einschließlich Mediadateicontainern wie MP4.

Bei sehr schlechten Netzwerkbedingungen kann der Export fehlschlagen, da das zu lange Puffern von Remote-Medien Prüfungen im Muxer auslöst, die darauf ausgelegt sind, zu erkennen, dass die Pipeline hängt. Sie können das Standardverhalten überschreiben, indem Sie maxDelayBetweenMuxerSamplesMs auf Transformer.Builder setzen:

Kotlin

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

Java

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

Wenn Sie C.TIME_UNSET übergeben, wird das Zeitlimit vollständig entfernt. Wenn Ihre App jedoch auf Chipsets ausgeführt wird, auf denen MediaCodec hängen bleiben kann, sollten Sie ein größeres Zeitlimit ungleich null festlegen.

Unterstützt Transformer 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 dazu führen, dass der Export nicht erfolgreich ist. Selbst auf Geräten, die 8K-Aufnahmen unterstützen, ist es möglicherweise nicht möglich, ein 8K-Video zu decodieren und neu zu codieren, da die verfügbaren Hardware-Codec- oder RAM-Ressourcen überschritten werden.

Wie hängt Transformer mit der plattformkompatiblen Medien-Transcodierung zusammen?

Kompatible Medien-Transcodierung ist eine Android-Plattformfunktion ab Android 12 (API‑Level 31), mit der Medien mit einer Länge von bis zu einer Minute in von der App unterstützte Formate konvertiert werden. Wenn Sie diese Funktion aktivieren, wird eine Mediendatei in einem inkompatiblen Format bei Bedarf transcodiert und das Ergebnis für spätere Lesevorgänge im Cache gespeichert.

Transformer unterstützt auch die Formatkonvertierung, ist aber als Support-Bibliothek verfügbar und die App hat die 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 sowie OpenGL für die Verarbeitung von Videoframes. Basierend auf unseren Messungen auf typischen Geräten ist der einschränkende Faktor für den Durchsatz von Transformer der Hardware-MediaCodec-Encoder-Durchsatz für Anwendungsfälle ohne Verarbeitung von schwergewichtigen Effekten. Das wird sich wahrscheinlich auf andere Implementierungen in gleicher Weise auswirken. Die plattformkompatible Transkodierungsfunktion hat beispielsweise eine ähnliche Leistung wie Transformer.

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