Obsługiwane formaty

Podczas definiowania formatów obsługiwanych przez ExoPlayer trzeba pamiętać, „formaty multimediów” są definiowane na wielu poziomach. Od najniższego do najwyższe wartości:

  • Format poszczególnych próbek multimediów (np. ramka filmu lub klatki). dźwięku). To przykładowe formaty. Pamiętaj, że typowy plik wideo zawierać multimedia w co najmniej dwóch przykładowych formatach; jeden dla wideo (np. H.264) oraz jeden dla dźwięku (np. AAC).
  • Format kontenera zawierającego próbki multimediów i powiązane metadanych. Są to formaty kontenerów. Plik multimedialny ma 1 kontener (np. MP4), który jest często określany przez rozszerzenie pliku. Notatka że w przypadku niektórych formatów tylko audio (np. MP3) formaty próbek i kontenerów może być taka sama.
  • Adaptacyjne technologie strumieniowania, takie jak DASH, SmoothStreaming i HLS. Te nie są formatami multimedialnymi, ale i tak trzeba określić, poziomu wsparcia zapewnianego przez ExoPlayer.

W poniższych sekcjach opisano obsługę odtwarzacza ExoPlayer na każdym poziomie, od najwyższego do najniższego najniższą. W dwóch ostatnich sekcjach opisano obsługę samodzielnych formatów napisów. i odtwarzania filmów HDR.

Adaptacyjne strumieniowanie

DASH

ExoPlayer obsługuje DASH z wieloma formatami kontenerów. Strumienie multimediów muszą być: demuksowany, co oznacza, że wideo, dźwięk i tekst muszą być zdefiniowane osobno. elementów AdaptationSet w manifeście DASH (CEA-608 jest wyjątkiem opisane w tabeli poniżej). Zawarte w nim przykładowe formaty dźwięku i wideo muszą również być obsługiwane (zobacz przykładowe formaty).

Funkcja Obsługiwane Komentarze
Kontenery
protokół FMP4 TAK Tylko strumienie zdemonstrowane
WebM TAK Tylko strumienie zdemonstrowane
Matroska TAK Tylko strumienie zdemonstrowane
MPEG-TS NIE Pomoc nie jest planowana
Napisy
TTML, TAK Nieprzetworzone lub umieszczone w FMP4 zgodnie z normą ISO/IEC 14496-30
WebVTT TAK Nieprzetworzone lub umieszczone w FMP4 zgodnie z normą ISO/IEC 14496-30
CEA-608 TAK Umieszczony w FMP4 po sygnalizowaniu za pomocą deskryptorów ułatwień dostępu SCTE
CEA-708 TAK Umieszczony w FMP4 po sygnalizowaniu za pomocą deskryptorów ułatwień dostępu SCTE
Metadane
Metadane EMSG TAK Umieszczone w FMP4
Ochrona treści
Widevine TAK „cenc” schemat: API 19+; „cbcs” schemat: API 25+
PlayReady SL2000 TAK Android TV, „cenc” tylko schemat
Wyczyść klucz TAK API 21+, „cenc” tylko schemat
Odtwarzanie na żywo
Standardowe odtwarzanie na żywo TAK
Odtwarzanie na żywo w CMAF z bardzo małym opóźnieniem TAK
Common Media Client Data (CMCD). TAK Przewodnik po integracji

Płynne odtwarzanie

ExoPlayer obsługuje funkcję SmoothStreaming w formacie kontenera FMP4. Strumienie multimediów musi być zdemonstrowany, co oznacza, że film, dźwięk i tekst muszą być zdefiniowane osobno. elementy StreamIndex w pliku manifestu SmoothStreaming. Zawarte w nim materiały audio Muszą być też obsługiwane przykładowe formaty wideo (zobacz przykładowe formaty).

Funkcja Obsługiwane Komentarze
Kontenery
protokół FMP4 TAK Tylko strumienie zdemonstrowane
Napisy
TTML, TAK Umieszczone w FMP4
Ochrona treści
PlayReady SL2000 TAK Tylko Android TV
Odtwarzanie na żywo
Standardowe odtwarzanie na żywo TAK
Common Media Client Data (CMCD). TAK Przewodnik po integracji

HLS

ExoPlayer obsługuje HLS z wieloma formatami kontenerów. Zawarte w nim materiały audio Muszą być też obsługiwane przykładowe formaty wideo (zobacz przykładowe formaty). Śr zdecydowanie zachęcamy producentów treści HLS do generowania wysokiej jakości strumieni HLS, zgodnie z opisem tutaj.

Funkcja Obsługiwane Komentarze
Kontenery
MPEG-TS TAK
FMP4/CMAF TAK
ADTS (AAC) TAK
MP3 TAK
Napisy
CEA-608 TAK
CEA-708 TAK
WebVTT TAK
Metadane
Identyfikator 3 TAK
SCTE-35 NIE
Ochrona treści
AES-128, TAK
Przykład AES-128 NIE
Widevine TAK API 19+ (schemat „cenc”) i 25+ (schemat „cbcs”)
PlayReady SL2000 TAK Tylko Android TV
Kontrola serwera
Aktualizacje delta TAK
Blokuję ponowne ładowanie playlisty TAK
Blokuję ładowanie wskazówek dotyczących wstępnego wczytywania TAK Z wyjątkiem zakresów bajtów o nieokreślonej długości
Odtwarzanie na żywo
Standardowe odtwarzanie na żywo TAK
HLS z krótkim czasem oczekiwania (Apple) TAK
HLS z krótkim czasem oczekiwania (społeczność) NIE
Common Media Client Data (CMCD). TAK Przewodnik po integracji

Formaty kontenerów progresywnych

ExoPlayer może odtwarzać strumienie w poniższych formatach kontenera. Muszą być też obsługiwane dołączone do tego formaty dźwiękowe i wideo (patrz Przykładowe formaty). Informacje o kontenerach obrazów i obsłudze formatu znajdziesz tutaj Grafika.

Format kontenera Obsługiwane Komentarze
MP4 TAK
M4A TAK
protokół FMP4 TAK
WebM TAK
Matroska TAK
MP3 TAK Niektóre strumienie można przewijać tylko z użyciem przewijania o stałej szybkości transmisji bitów**
Ogg TAK Zawiera Vorbis, Opus i FLAC
WAV TAK
MPEG-TS TAK
MPEG-PS TAK
FLV TAK Nie można przewijać*
ADTS (AAC) TAK Dostępna tylko do przewijania przy stałej szybkości transmisji bitów**
FLAC TAK Przy użyciu biblioteki FLAC lub wyodrębniania FLAC w bibliotece ExoPlayer***
AMR TAK Dostępna tylko do przewijania przy stałej szybkości transmisji bitów**

* Przeszukiwanie nie jest obsługiwane, ponieważ kontener nie zawiera metadanych (na przykład przykładowy indeks), który umożliwia odtwarzaczowi multimediów skuteczne wyszukiwanie. Jeśli wymagane jest wyszukiwanie, zalecamy użycie bardziej odpowiedniego formatu kontenera.

** Te moduły wyodrębniania danych mają FLAG_ENABLE_CONSTANT_BITRATE_SEEKING flagi dla umożliwiające przybliżone przewijanie z założeniem o stałej szybkości transmisji bitów. Ten funkcja nie jest domyślnie włączona. Najprostszy sposób, aby to włączyć dla wszystkich modułów wyodrębniania, które go obsługują, jest użycie DefaultExtractorsFactory.setConstantBitrateSeekingEnabled, zgodnie z opisem tutaj.

*** Wyodrębnianie biblioteki FLAC generuje nieprzetworzony dźwięk, który może być obsługiwany na wszystkich poziomach interfejsu API. Dane wyjściowe biblioteki ExoPlayer wyodrębniania FLAC ramki audio FLAC i wymaga dekodera FLAC (np. MediaCodec dekoder obsługujący format FLAC (wymagany od interfejsu API poziomu 27) lub bibliotekę FFmpeg z włączonym FLAC). W elemencie DefaultExtractorsFactory używany jest protokół wyodrębniania rozszerzeń, jeśli aplikacja została skompilowana za pomocą biblioteki FLAC. W przeciwnym razie używany jest ekstraktor biblioteki ExoPlayer.

RTSP

ExoPlayer obsługuje zarówno protokół RTSP na żywo, jak i na żądanie. Obsługiwane formaty próbek wymienionych poniżej.

Obsługiwane formaty próbek

  • H264 (opis mediów SDP musi zawierać dane SPS/PPS w fmtp) do inicjowania dekodera).
  • AAC (ze strumieniem bitowym ADTS).
  • AC3.

Obsługiwane typy sieci

  • Transmisja pojedyncza RTP przez UDP (multicast nie jest obsługiwany).
  • Przeplatany RTSP, RTP przez RTSP przy użyciu TCP.

Przykładowe formaty

Domyślnie ExoPlayer używa dekoderów platformy Androida. Dlatego też przykładowe formaty zależą od platformy, a nie od ExoPlayer. Przeczytaj artykuł Obsługiwane formaty multimediów: dokumentacji dotyczącej przykładowych formatów obsługiwanych przez urządzenia z Androidem. Pamiętaj, że poszczególne urządzenia mogą obsługiwać dodatkowe formaty niż wymienione.

Oprócz dekoderów platformy Androida ExoPlayer może też wykorzystywać z rozszerzeń do dekodera oprogramowania. Należy je utworzyć ręcznie i uwzględnić w projektach, które chcą z nich korzystać. Obecnie udostępniamy dekoder oprogramowania biblioteki dla AV1 VP9 FLAC Opus oraz FFmpeg.

Biblioteka FFmpeg

Biblioteka FFmpeg obsługuje dekodowanie różnych formatów próbek dźwięku. Możesz wybrać, które mają być uwzględnione podczas tworzenia biblioteki, zgodnie z opisem w sekcji do pliku README.md biblioteki. ta tabela zawiera mapowanie z formatu próbki audio na odpowiedni Nazwa dekodera FFmpeg.

Przykładowy format Nazwy dekodera
Vorbis Vorbis
Opus Opus
FLAC Flac
lista ALAC Alac
PCM (μ-prawo) pcm_mulaw
Prawo PCM pcm_alaw
MP1, MP2, MP3 mp3
AMR-NB Amrnb
AMR-WB Amrwb
AAC AAC
AC-3 AC3
E-AC-3 Eac3,
DTS, DTS-HD DC
TrueHD MLP truehd

Obrazy

ExoPlayer obsługuje następujące formaty obrazów. Zobacz Wczytywanie bibliotek obrazów integracji z bibliotekami zewnętrznymi, które mogą zapewnić obsługę różnych formatów.

Format pliku graficznego Obsługiwane Uwagi
BMP TAK
GIF NIE Brak obsługi wyodrębniania
JPEG TAK
Zdjęcie ruchome JPEG TAK Obsługa nieruchomych obrazów i filmów
PNG TAK
WebP TAK
HEIF/HEIC TAK
Zdjęcie ruchome HEIC Częściowo Obsługiwane są tylko obrazy nieruchome*
AVIF (wartość bazowa) TAK Odkodowane tylko na Androidzie 14 i nowszych

* Fragment wideo ze zdjęć ruchomych HEIC można uzyskać za pomocą Metadatapickupr, i odtwarzane jako samodzielny plik.

Samodzielne formaty napisów

ExoPlayer obsługuje niezależne pliki napisów w różnych formatach. Napisy takie pliki mogą być ładowane z innego urządzenia zgodnie z opisem na stronie elementów multimedialnych.

Format kontenera Obsługiwane Typ MIME
WebVTT TAK Typy MIME.TEXT_VTT
TTML / SMPTE-TT TAK Typy MIME.APPLICATION_TTML
SubRip TAK Typy MIME.APPLICATION_SUBRIP
Podstacja alfa (SSA/ASS) TAK Typy MIME.TEXT_SSA

Odtwarzanie filmów HDR

ExoPlayer obsługuje wyodrębnianie filmów o wysokim zakresie dynamiki (HDR) w różnych w tym Dolby Vision w formacie MP4 i HD10+ w formacie Matroska/WebM. Dekodowanie a wyświetlanie treści HDR zależy od obsługi platformy urządzenia. Zobacz Odtwarzanie filmów HDR aby dowiedzieć się więcej o sprawdzaniu możliwości dekodowania/wyświetlania HDR i ograniczeń Obsługa HDR na różnych wersjach Androida.

Podczas odtwarzania strumienia HDR, który wymaga obsługi konkretnego profilu kodeka, Domyślny selektor MediaCodec ExoPlayer wybierze dekoder, który obsługuje ten (jeśli jest dostępny) nawet wtedy, gdy inny dekoder dla tego samego typu MIME nie obsługuje tego profilu, pojawia się wyżej na liście kodeków. Może to spowodować przy wyborze dekodera programowego w przypadkach, gdy strumień przekracza możliwości dekodera sprzętowego dla tego samego typu MIME.