Dépannage


Pourquoi ne puis-je pas accéder aux fichiers locaux dans l'application de démonstration ?

L'application de l'espace de stockage cloisonné d'Android 11 (niveau d'API 30) empêche l'accès direct au système de fichiers. Pour les tests manuels pendant le développement, il est possible d'accéder aux fichiers locaux en ajoutant l'autorisation de gestion du stockage externe dans le fichier manifeste de l'application de démonstration:

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

Accordez ensuite l'autorisation via adb:

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

Pourquoi l'exportation échoue-t-elle sur un appareil spécifique ?

Veuillez signaler un problème dans l'outil de suivi des problèmes Media3 en fournissant suffisamment d'informations pour le reproduire. Des solutions de contournement pour les problèmes spécifiques à l'appareil peuvent être ajoutées à la bibliothèque pour améliorer la compatibilité au fil du temps.

L'outil Transformer est-il compatible avec la transformation (ou l'enregistrement) de contenus multimédias distants ?

Transformer est compatible avec les flux progressifs distants, y compris les conteneurs de fichiers multimédias tels que MP4.

En cas de mauvaise qualité du réseau, l'exportation peut échouer, car la mise en mémoire tampon du contenu multimédia distant pendant trop longtemps déclenche des vérifications dans le multiplexeur destinées à identifier que le pipeline est bloqué. Vous pouvez ignorer le comportement par défaut en définissant maxDelayBetweenMuxerSamplesMs sur Transformer.Builder:

Kotlin

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

Java

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

La transmission de C.TIME_UNSET supprime complètement le délai d'inactivité, mais si votre application s'exécute sur des chips où MediaCodec peut être bloqué, vous pouvez définir un délai d'expiration non nul plus élevé.

Le modèle Transformer est-il compatible avec les entrées 8K ?

Transformer est implémenté de manière indépendante du format. Il ne limite donc pas le traitement de la vidéo 8K, mais les capacités matérielles de l'appareil peuvent empêcher l'exportation. Par exemple, même sur les appareils capables de capturer la résolution 8K, il peut être impossible de décoder et de réencoder une vidéo 8K en raison du dépassement des ressources de codec matériel ou de RAM disponibles.

Quel est le lien entre Transformer et le transcodage multimédia compatible avec les plates-formes ?

Le transcodage multimédia compatible est une fonctionnalité de la plate-forme Android d'Android 12 (niveau d'API 31) qui convertit des contenus multimédias d'une durée maximale d'une minute dans des formats compatibles avec l'application. Si vous activez cette fonctionnalité, la lecture d'un fichier multimédia dans un format incompatible entraîne son transcodage à la demande. Le résultat est mis en cache pour les opérations de lecture ultérieures.

Transformer est également compatible avec la conversion de format, mais il est disponible en tant que bibliothèque Support et l'application dispose d'un contrôle total sur l'opération de transcodage.

Comment réduire la latence d'exportation ou augmenter le débit ?

Transformer s'appuie sur MediaCodec pour le décodage et l'encodage avec accélération matérielle, et sur OpenGL pour le traitement des images vidéo. D'après les mesures que nous avons effectuées sur des appareils classiques, le facteur limitant du débit de Transformer est le débit de l'encodeur MediaCodec matériel pour les cas d'utilisation sans traitement d'effets lourds. Cela est susceptible d'avoir un impact similaire sur d'autres implémentations. Par exemple, la fonctionnalité de transcodage compatible avec la plate-forme offre des performances semblables à celles du modèle Transformer.

L'aperçu de débogage de l'application de démonstration réduit considérablement le débit. Vous devez donc désactiver la fonctionnalité d'aperçu lorsque vous effectuez des tests avec un build de l'application de démonstration pour avoir une idée réaliste des performances.