Formati supportati

Vedi i formati supportati da ExoPlayer pagina per un'introduzione formati multimediali in generale. Le stesse limitazioni al caricamento, all'estrazione i flussi di decodifica si applicano con Transformer, anche se Transformer non supporta Moduli di decodifica del software in bundle di ExoPlayer.

Transformer si basa anche su MediaCodec per la codifica e deve effettuare il multiplexing, oppure mux, file multimediali di output, che limita i formati di output supportati. Consulta Codec video MediaCodec per ulteriori informazioni sui limiti di codifica MediaMuxer per le limitazioni applicabili al container multimediale di output. Solo Transformer crea file MP4.

Per impostazione predefinita, Transformer utilizza MediaMuxer, ma una InAppMuxer in fase di sviluppo è disponibile facoltativamente per evitare alcune delle limitazioni di MediaMuxer relative strutture del frame di riferimento e formati di esempio supportati. Il Muxer predefinito diventerà il Muxer in-app in una release futura.

Supporto per le immagini

Transformer utilizza BitmapFactory per caricare e decodificare tutti gli asset immagine, quindi Transformer supporta tutti i formati supportati da BitmapFA. Consulta Supporto immagini per i tipi di immagine supportati. Per i formati multi-immagine (ad es. GIF), una singola immagine il frame del contenitore viene visualizzato se DefaultAssetLoaderFactory è in uso.

Formati speciali

Transformer supporta la gestione dell'input nei formati multimediali più recenti che offrono rispetto ai formati convenzionali.

Gestione dei video HDR

Sempre più dispositivi supportano il video HDR acquisizioni, per immagini più vivide e accurate colori e una gamma di luminosità più ampia.

Transformer supporta la modifica di video HDR a partire da Android 13 (livello API 33) su dispositivi che supportano la codifica richiesta. Durante l'editing dei video HDR, gli effetti video devono gestire componenti di colore in virgola mobile a 16 bit e BT.2020 spazio colore. HDR_MODE_KEEP_HDR è la modalità predefinita durante la creazione Composition. Se l'editing HDR non è supportato, utilizza HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL.

La conversione da HDR in SDR, nota anche come mappatura dei toni, è supportata da Android versione 10 (livello API 29) e successive sui dispositivi con decodifica e OpenGL richiesti assistenza in tempo reale. Questa funzionalità è utile quando si condividono contenuti multimediali HDR con altri servizi o app che non supportano l'importazione di contenuti HDR. Per attivare la mappatura dei toni utilizzando la chiamata OpenGL setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) durante la creazione dell'elemento Composition. A partire da Android 12 (livello API 31), MediaCodec supporta anche la mappatura dei toni su alcuni dispositivi, inclusi tutti quelli in esecuzione Android 13 o versioni successive in grado di acquisire video HDR. Per attivare la mappatura dei toni utilizzando MediaCodec chiama setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC).

Gestione di contenuti multimediali in slow motion

I video in slow motion includono metadati che indicano la velocità con cui ogni sezione dello stream. Appiattimento è il processo di produzione di una nuova Video stream basati sul video in slow motion, ma in cui le sezioni sono velocizzate o rallentati in base ai metadati, in modo che vengano riprodotti correttamente anche sui giocatori che non applicano metadati in slow motion.

Per uniformare gli stream in slow motion, utilizza lo strumento per la creazione di setFlattenForSlowMotion su 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);

In questo modo potrai supportare i video in slow motion senza doverti preoccupare per gestire questi formati speciali. Tutto quello che devi fare è memorizzare e riprodurre o su una versione bidimensionale del video anziché quella originale.