Formats compatibles

Consultez la liste des formats compatibles avec ExoPlayer. pour obtenir une présentation les formats de médias en général. Les mêmes limitations s'appliquent au chargement, à l'extraction et les flux de décodage s'appliquent à Transformer, bien que celui-ci ne soit pas Modules de décodeur logiciels groupés d'ExoPlayer.

Transformer s'appuie également sur MediaCodec pour l'encodage et doit effectuer un multiplexage mux, les fichiers multimédias de sortie, ce qui limite les formats de sortie acceptés. Voir Codecs vidéo MediaCodec pour en savoir plus sur les limites d'encodage et MediaMuxer pour connaître les limites qui s'appliquent au conteneur multimédia de sortie. Transformateur uniquement permet de créer des fichiers MP4.

Par défaut, Transformer utilise MediaMuxer, mais un InAppMuxer en cours est disponible en option pour éviter certaines limites de MediaMuxer concernant les structures de trame de référence et les exemples de formats pris en charge. Le multiplexeur par défaut devenir le multiplexeur intégré à l’application dans une prochaine version.

Compatibilité avec les images

Transformer utilise BitmapFactory pour charger et décoder tous les éléments image. Transformer prend en charge tous les formats compatibles avec BitmapFactory. Voir Images compatibles pour les types d'images compatibles. Pour les formats multi-images (GIF, par exemple), une seule image le frame du conteneur est affiché si DefaultAssetLoaderFactory est utilisé.

Formats spéciaux

Transformer prend en charge la gestion des entrées dans des formats multimédias plus récents qui fournissent par rapport aux formats traditionnels.

Gérer les vidéos HDR

De plus en plus d'appareils sont désormais compatibles avec les vidéos HDR pour un rendu plus précis et plus net, couleurs et une plus grande plage de luminosité.

Transformer permet de modifier des vidéos HDR à partir d'Android 13 (niveau d'API 33). sur les appareils compatibles avec l'encodage requis. Pour la retouche de vidéos HDR, les effets vidéo doivent être compatibles avec les composants de couleur à virgule flottante 16 bits et BT.2020 espace colorimétrique. HDR_MODE_KEEP_HDR est le mode par défaut lorsque vous créez le Composition Si la retouche HDR n'est pas prise en charge, l'outil Transformer utilise HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL.

La conversion du format HDR en SDR, également appelée mappage des tons, est compatible avec Android. À partir de 10 (niveau d'API 29) sur les appareils disposant du décodage et d'OpenGL requis de l'assistance. Cette fonctionnalité est utile lorsque vous partagez des contenus multimédias HDR avec d'autres applications ou services ne permettent pas l'ingestion de contenu HDR. Pour activer le mappage des tons à l'aide d'un appel OpenGL, setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) lors de la création de Composition À partir d'Android 12 (niveau d'API 31), MediaCodec prend également en charge le mappage des tons sur certains appareils, y compris tous les appareils exécutant Android 13 ou version ultérieure permettant d'enregistrer des vidéos HDR. Pour activer le mappage des tons à l'aide de MediaCodec appeler setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC).

Gérer les contenus multimédias au ralenti

Les vidéos au ralenti incluent des métadonnées indiquant la vitesse à laquelle chaque séquence du flux doit être lu. L'aplatissement est le processus de production flux vidéo basé sur la vidéo au ralenti, mais où les sections sont accélérées ou ralenties en fonction des métadonnées, afin qu'elles soient lues correctement qui n'appliquent pas de métadonnées de ralenti.

Pour aplatir les flux de ralenti, utilisez le compilateur setFlattenForSlowMotion. sur EditedMediaItem.

Kotlin

val editedMediaItem =
    EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build()
val transformer =
    Transformer.Builder(context).addListener(transformerListener).build()
transformer.start(editedMediaItem, outputPath)

Java

EditedMediaItem editedMediaItem =
    new EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build();
Transformer transformer =
    new Transformer.Builder(context).addListener(transformerListener).build();
transformer.start(editedMediaItem, outputPath);

Vous pouvez ainsi regarder des vidéos au ralenti sans vous soucier de de ces formats spéciaux. Il vous suffit de stocker et de lire une version aplatie de la vidéo au lieu de l'originale.