Jetpack Media3 to nowe miejsce dla bibliotek multimediów, które umożliwia aplikacjom na Androida wyświetlanie bogatych treści audiowizualnych. Media3 oferuje prostą architekturę z możliwością zaawansowanej personalizacji, niezawodności i optymalizacji na podstawie możliwości urządzenia, co pozwala uniknąć złożoności związanej z fragmentacją.
Ten dokument zawiera wprowadzenie do najważniejszych interfejsów API do implementowania odtwarzania i edytowania w przypadku korzystania z Media3.
Komponenty odtwarzania
Media3 oferuje kilka kluczowych komponentów do odtwarzania. Jeśli pracowałeś(-aś) z poprzednimi bibliotekami multimediów Android, klasy, z których składają się te komponenty, będą Ci znane.
Ten diagram pokazuje, jak te komponenty współpracują ze sobą w typowej aplikacji.
Odtwarzacz
Odtwarzacz multimediów to komponent aplikacji, który umożliwia odtwarzanie plików multimedialnych. W Media3 znajdziesz:
| Zajęcia | Opis | Uwaga dotycząca implementacji |
|---|---|---|
Player |
Player to interfejs definiujący tradycyjne funkcje odtwarzacza multimediów, takie jak odtwarzanie, wstrzymywanie i przewijanie.
|
W Media3 interfejs Player to wspólny interfejs API, który jest implementowany lub używany przez kilka komponentów, takich jak MediaSession i MediaController.
|
ExoPlayer |
ExoPlayer to domyślna implementacja interfejsu Player w Media3.
|
Więcej informacji o Media3 ExoPlayer
Sesja multimediów
Sesja multimedialna zapewnia uniwersalny sposób interakcji z odtwarzaczem multimediów. Umożliwia to aplikacji reklamowanie odtwarzania multimediów w źródłach zewnętrznych i otrzymywanie żądań sterowania odtwarzaniem z tych źródeł. W Media3 znajdziesz:
| Zajęcia | Opis | Uwaga dotycząca implementacji |
|---|---|---|
MediaSession |
Sesje multimedialne umożliwiają aplikacji interakcję z odtwarzaczem audio lub wideo. Reklamują odtwarzanie multimediów na zewnątrz i odbierają polecenia odtwarzania ze źródeł zewnętrznych. |
W Media3 obiekt MediaSession potrzebuje obiektu Player, aby wykonywać polecenia i uzyskiwać bieżący stan.
|
MediaSessionService |
Usługa MediaSessionService przechowuje sesję multimediów i powiązany z nią odtwarzacz w usłudze oddzielonej od głównej Activity, aby umożliwić odtwarzanie w tle.
|
|
MediaController |
Klasa MediaController jest zwykle używana do wysyłania poleceń spoza aplikacji, na przykład z innych aplikacji lub z systemu.
Polecenia są wysyłane do podstawowego Player powiązanego z MediaSession.
|
Klasa MediaController implementuje interfejs Player, ale podczas wywoływania metody MediaController wysyła polecenie do połączonego obiektu MediaSession. Aplikacje klienckie, takie jak Asystent Google, mogą używać MediaController do sterowania odtwarzaniem w połączonej sesji.
|
MediaLibraryService |
MediaLibraryService jest podobny do MediaSessionService, ale zawiera dodatkowe interfejsy API, dzięki którym możesz udostępniać bibliotekę treści aplikacjom klienckim.
|
|
MediaBrowser |
Klasa MediaBrowser umożliwia użytkownikowi poruszanie się po bibliotece treści aplikacji multimedialnej i wybieranie elementów do odtworzenia.
|
Klasa MediaBrowser implementuje interfejsy MediaController i Player. Podobnie jak w przypadku MediaController, aplikacje klienckie, takie jak Android Auto, zwykle implementują MediaBrowser.
|
Więcej informacji o MediaSession w Media3
Komponenty interfejsu
Media3 udostępnia domyślne komponenty interfejsu użytkownika do wyświetlania filmów i sterowania odtwarzaniem.
| Zajęcia | Opis | Uwaga dotycząca implementacji |
|---|---|---|
PlayerView |
Domyślny View, aby wyświetlić film i elementy sterujące odtwarzaniem.
|
łączy się z ExoPlayer, MediaController lub dowolnym innym niestandardowym Player;
|
PlayerSurface |
Interfejs Composable reprezentujący dedykowany rysunek
Surface
do wyświetlania filmu.
|
Łączy się z dowolnym urządzeniem Player, ale nie zawiera elementów sterujących odtwarzaniem.
Służy tylko do renderowania klatek i można zmieniać jego rozmiar w zależności od różnych typów
ContentScale. Tę i wiele innych komponentów znajdziesz w komponentach interfejsu tworzenia wiadomości.
|
Więcej informacji o interfejsie Media3
Edytowanie komponentów
Media3 obejmuje interfejsy Transformer API do edycji multimediów, w tym:
- przetwarzanie dźwięku i obrazu, np. dodawanie filtrów i efektów;
- obsługa formatów specjalnych, takich jak filmy HDR i filmy w zwolnionym tempie;
- kompozycja, np. łączenie wielu plików wejściowych;
- Eksportowanie końcowego wyjścia do pliku
| Zajęcia | Opis | Uwaga dotycząca implementacji |
|---|---|---|
Transformer |
Używaj klasy Transformer do uruchamiania i zatrzymywania przekształceń oraz sprawdzania postępu bieżącego przekształcenia.
|
|
Effects |
Obiekt Effects to zbiór efektów dźwiękowych i wideo, które można zastosować do zasobu multimedialnego.
|
|
EditedMediaItem |
Element EditedMediaItem reprezentuje element multimedialny do przetworzenia oraz zmiany, które mają zostać w nim zastosowane.
|
Przed rozpoczęciem procesu eksportowania możesz użyć opcji ExoPlayer, aby wyświetlić podgląd efektów dodanych do elementu multimedialnego.
|
Więcej informacji o przekształcaczu Media3
Film z wprowadzeniem
W poniższym filmie inżynierowie, którzy stworzyli Media3, przedstawiają tę usługę.
Przydatne linki
- Media Developer Center
ExoPlayerdokumenty- Przewodnik po migracji
- AndroidX Media3 na GitHubie
- Przykładowa aplikacja do sesji media3
- Uniwersalny odtwarzacz muzyczny na Androida – przykładowa aplikacja