Formats compatibles

Pour une présentation générale des formats multimédias, consultez la page Formats acceptés par ExoPlayer. Les mêmes limites concernant le chargement, l'extraction et le décodage des flux s'appliquent à Transformer, bien que celui-ci ne soit pas compatible avec les modules de décodeur logiciel groupés d'ExoPlayer.

Transformer s'appuie également sur MediaCodec pour l'encodage, ce qui limite les formats de sortie acceptés. Pour en savoir plus sur les limites d'encodage, consultez la section Codecs vidéo MediaCodec.

Par défaut, Transformer génère des fichiers MP4 standards à l'aide de InAppMp4Muxer. Si votre application nécessite un format MP4 fragmenté, vous pouvez transmettre un InAppFragmentedMp4Muxer.Factory lors de l'initialisation de votre Transformer instance. Media3 est également compatible avec d'autres formats tels que WebM, AAC, Ogg et WAV à l'aide de multiplexeurs dédiés tels que WebmMuxer, AacMuxer, OggMuxer, et WavMuxer. Ces derniers doivent être encapsulés dans un Muxer.Factory personnalisé pour être injectés, mais les futures versions incluront des implémentations de fabrique prêtes à l'emploi pour simplifier ce processus.

Accepter les images

Transformer utilise BitmapFactory pour charger et décoder tous les éléments d'image. Il est donc compatible avec tous les formats pris en charge par BitmapFactory. Pour obtenir la liste des types d'images compatibles, consultez la section Images compatibles. Pour les formats multi-images (par exemple, les GIF), une seule image du conteneur s'affiche si DefaultAssetLoaderFactory est utilisé.

Formats spéciaux

Transformer est compatible avec la gestion des entrées dans les formats multimédias plus récents qui offrent des fonctionnalités spéciales par rapport aux formats conventionnels.

Gérer les vidéos HDR

De plus en plus d'appareils sont compatibles avec la capture vidéo HDR qui permet d'obtenir des couleurs plus vives et précises , ainsi qu'une plus grande plage de luminosité.

Transformer est compatible avec le montage de vidéos HDR à partir d'Android 13 (niveau d'API 33) sur les appareils disposant de la prise en charge de l'encodage requise. Lors du montage de vidéos HDR, tous les effets vidéo GL doivent gérer les composants de couleur à virgule flottante 16 bits et l'espace colorimétrique BT.2020. HDR_MODE_KEEP_HDR est le mode par défaut lors de la création de la Composition. Si le montage HDR n'est pas compatible, Transformer revient à l'utilisation de HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL.

La conversion de HDR en SDR, également appelée mappage des tons, est compatible à partir d'Android 10 (niveau d'API 29) sur les appareils disposant de la prise en charge du décodage et d'OpenGL requise. Cela est utile lorsque vous partagez des contenus multimédias HDR avec d'autres applications ou services qui ne sont pas compatibles avec l'ingestion de contenus HDR. Pour activer le mappage des tons à l'aide d'OpenGL, appelez setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) lors de la création de la Composition. À partir d'Android 12 (niveau d'API 31), MediaCodec est également compatible avec le mappage des tons sur certains appareils, y compris tous ceux qui exécutent Android 13 ou une version ultérieure et qui peuvent capturer des vidéos HDR. Pour activer le mappage des tons à l'aide de MediaCodec, appelez setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC).

Transformer est également compatible avec les scénarios de transcodage avancés, tels que les suivants :

  • Vidéo Ultra HDR vers HDR : vous pouvez convertir des entrées d'image Ultra HDR en vidéo HDR, en conservant la plage dynamique et la large gamme de couleurs de l'image. Ainsi, les photos correspondent à la luminosité maximale et à la vivacité des vidéos HDR dans les chronologies mixtes.
  • Transcodage et transmuxage Dolby Vision : Transformer est compatible avec le transmuxage de la couche de base rétrocompatible (telle que HEVC) à partir de contenus multimédias Dolby Vision (profil 8) sans réencodage, ou avec le transcodage avec mappage des tons dans des formats SDR standards.

Gérer les contenus multimédias au ralenti

Les vidéos au ralenti incluent des métadonnées indiquant la vitesse à laquelle chaque section du flux doit être lue. L'aplatissement est le processus de production d'un nouveau 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, de sorte qu'elles soient lues correctement même sur les lecteurs qui n'appliquent pas de métadonnées au ralenti.

Pour aplatir les flux au ralenti, utilisez la méthode de compilation 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 prendre en charge les vidéos au ralenti sans avoir à vous soucier de la gestion de ces formats spéciaux. Il vous suffit de stocker et de lire la version aplatie de la vidéo au lieu de la version d'origine.