Rozwiązywanie problemów


Dlaczego nie mam dostępu do plików lokalnych w aplikacji w wersji demonstracyjnej?

Wymuszanie ograniczonego dostępu do miejsca na dane od Androida 11 (poziom API 30) uniemożliwia bezpośredni dostęp do systemu plików. W przypadku testów ręcznych podczas programowania można uzyskać dostęp do plików lokalnych, dodając uprawnienie do zarządzania pamięcią zewnętrzną w pliku manifestu aplikacji w wersji demonstracyjnej:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

Następnie przyznaj uprawnienia za pomocą adb:

adb shell appops set --uid androidx.media3.demo.transformer \
    MANAGE_EXTERNAL_STORAGE allow

Dlaczego eksportowanie nie działa na konkretnym urządzeniu?

Zgłoś problem w trackerze problemów Media3, podając wystarczającą ilość informacji, aby można było go odtworzyć. Do biblioteki można dodawać obejścia problemów związanych z konkretnymi urządzeniami, aby z czasem zwiększać zgodność.

Czy Transformer obsługuje przekształcanie (lub nagrywanie) multimediów zdalnych?

Transformer obsługuje zdalne strumienie progresywne, w tym kontenery plików multimedialnych, takie jak MP4.

W przypadku bardzo słabego połączenia sieciowego eksportowanie może się nie powieść, ponieważ zbyt długie buforowanie zdalnych multimediów wywołuje w multiplekserze testy, które mają na celu wykrycie, że potok się zawiesił. Aby zastąpić domyślne działanie, ustaw maxDelayBetweenMuxerSamplesMs na Transformer.Builder:

Kotlin

Transformer.Builder(context).setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET).build()

Java

new Transformer.Builder(context).setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET).build();

Przekazanie wartości C.TIME_UNSET całkowicie usuwa limit czasu, ale jeśli aplikacja działa na chipsetach, na których MediaCodec może się zawiesić, warto ustawić większy, niezerowy limit czasu.

Czy Transformer obsługuje dane wejściowe w rozdzielczości 8K?

Transformer jest zaimplementowany w sposób niezależny od formatu, więc nie ogranicza obsługi filmów w rozdzielczości 8K, ale możliwości sprzętowe urządzenia mogą uniemożliwić eksportowanie. Na przykład nawet na urządzeniach, które mogą nagrywać w rozdzielczości 8K, dekodowanie i ponowne kodowanie filmu w rozdzielczości 8K może być niemożliwe z powodu przekroczenia dostępnych zasobów kodeka sprzętowego lub pamięci RAM.

Jaki jest związek usługi Transformer z transkodowaniem zgodnych multimediów na platformie?

Transkodowanie zgodnych multimediów to funkcja platformy Android dostępna od Androida 12 (API na poziomie 31), która konwertuje multimedia o długości do minuty na formaty obsługiwane przez aplikację. Jeśli zdecydujesz się na korzystanie z tej funkcji, odczytanie pliku multimedialnego w niezgodnym formacie spowoduje jego transkodowanie na żądanie, a wynik zostanie zapisany w pamięci podręcznej na potrzeby późniejszych operacji odczytu.

Transformer obsługuje też konwersję formatu, ale jest dostępny jako biblioteka pomocnicza, a aplikacja ma pełną kontrolę nad operacją transkodowania.

Jak mogę zmniejszyć opóźnienie eksportu lub zwiększyć przepustowość?

Transformer korzysta z MediaCodec do dekodowania i kodowania z akceleracją sprzętową oraz z OpenGL do przetwarzania klatek wideo. Z naszych pomiarów na typowych urządzeniach wynika, że czynnikiem ograniczającym przepustowość modelu Transformer jest przepustowość enkodera sprzętowegoMediaCodec w przypadku zastosowań bez przetwarzania efektów o dużej wadze. Prawdopodobnie będzie to miało podobny wpływ na inne wdrożenia. Na przykład funkcja transkodowania zgodnego z różnymi platformami ma podobną wydajność do funkcji Transformer.

Podgląd debugowania w aplikacji w wersji demonstracyjnej znacznie zmniejsza przepustowość, więc podczas testowania aplikacji w wersji demonstracyjnej w kompilacji do publikacji wyłącz funkcję podglądu, aby uzyskać realistyczny obraz wydajności.