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.