Zobacz formaty obsługiwane przez ExoPlayer , gdzie znajdziesz wprowadzenie z formatami multimedialnymi. Te same ograniczenia dotyczące wczytywania, wyodrębniania i strumienie dekodowania są stosowane w Transformer, chociaż Transformer nie obsługuje Moduły dekodera oprogramowania ExoPlayer dostarczane w pakiecie.
Transformer korzysta też z kodowania MediaCodec
i musi korzystać z multipleksa lub
mux, wyjściowe pliki multimedialne, które ograniczają obsługiwane formaty wyjściowe. Zobacz
Kodeki wideo MediaCodec
znajdziesz więcej informacji o ograniczeniach kodowania
MediaMuxer
aby poznać ograniczenia dotyczące wyjściowego kontenera multimediów. Tylko Transformer
generuje pliki MP4.
Domyślnie Transformer
używa MediaMuxer
, a InAppMuxer
w toku
jest opcjonalnie dostępna, aby uniknąć niektórych ograniczeń usługi MediaMuxer
dotyczących
struktury ramek odniesienia i obsługiwane formaty przykładowych. Domyślny Muxer będzie
w przyszłej wersji.
Obsługa obrazów
Transformer używa BitmapFactory
do wczytywania i dekodowania wszystkich komponentów z obrazem,
Transformer obsługuje wszystkie formaty, które obsługuje BitmapFactory. Zobacz
Obsługa obrazów
o obsługiwanych typach obrazów. W przypadku formatów z kilkoma obrazami (np. GIF) jeden obraz
ramka z kontenera jest wyświetlana, jeśli DefaultAssetLoaderFactory
ma wartość
.
Specjalne formaty
Transformer obsługuje dane wejściowe w nowszych formatach multimediów, które zapewniają w porównaniu z formatami konwencjonalnymi.
Praca z filmami HDR
Coraz więcej urządzeń obsługuje teraz filmy HDR , dając bardziej żywe i dokładne i zwiększyć zakres jasności.
Transformer obsługuje edytowanie filmów HDR już od Androida 13 (poziom interfejsu API 33)
na urządzeniach z wymaganą
obsługą kodowania. Podczas edytowania filmów HDR każdy
efekty wideo muszą obsługiwać 16-bitowe komponenty koloru zmiennoprzecinkowego i BT.2020
przestrzeni kolorów. HDR_MODE_KEEP_HDR
to domyślny tryb przy tworzeniu
Composition
Jeśli edycja HDR nie jest obsługiwana, Transformer
wraca do użycia HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL
.
Konwersja HDR na SDR (nazywana też mapowaniem tonów) jest obsługiwana na Androidzie.
10 (poziom interfejsu API 29) i nowsze na urządzeniach z wymaganym dekodowaniem i trybem OpenGL
. Jest to przydatne podczas udostępniania multimediów HDR innym aplikacjom lub usługom,
nie obsługują przetwarzania treści HDR. Aby włączyć mapowanie tonów przez wywołanie OpenGL
setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL)
podczas tworzenia
Composition
MediaCodec
– od Androida 12 (poziom interfejsu API 31)
obsługuje też mapowanie tonów na niektórych urządzeniach, w tym na wszystkich urządzeniach
Android 13 lub nowszy, który umożliwia nagrywanie filmów HDR. Aby włączyć mapowanie tonów za pomocą:
MediaCodec
zadzwoń pod numer setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
.
Obsługa multimediów w zwolnionym tempie
W filmach w zwolnionym tempie znajdują się metadane wskazujące szybkość, z jaką każdy fragment transmisji strumieniowej. Spłaszczanie to proces tworzenia nowego jest to strumień wideo oparty na zwolnionym tempie, ale w przypadku których sekcje są przyspieszone. lub wolniej na podstawie metadanych, aby odtwarzały poprawnie nawet na innych urządzeniach bez metadanych zwolnionego tempa.
Aby dopracować strumienie w zwolnionym tempie, użyj kreatora setFlattenForSlowMotion
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);
Dzięki temu możesz odtwarzać filmy w zwolnionym tempie, nie martwiąc się o to, do obsługi tych specjalnych formatów. Wystarczy przechowywać i odtwarzać skróconą wersję filmu, a nie oryginału.