Rozwiązywanie problemów


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

Wymuszanie ograniczonego dostępu do miejsca na dane na Androidzie 11 (poziom interfejsu API 30) uniemożliwia bezpośredni dostęp do systemu plików. Na potrzeby testów ręcznych w trakcie tworzenia aplikacji można uzyskać dostęp do plików lokalnych, dodając do pliku manifestu aplikacji demonstracyjnej uprawnienia do zarządzania pamięcią zewnętrzną:

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

Następnie przyznaj uprawnienia za pomocą narzędzia adb:

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

Dlaczego eksportowanie nie powiedzie się na konkretnym urządzeniu?

Zgłoś problem w narzędziu do śledzenia problemów Media3, podając wystarczającą ilość informacji, by go odtworzyć. Aby z czasem poprawić zgodność, można dodawać do biblioteki obejścia problemów typowych dla urządzeń.

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

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

W bardzo złych warunkach sieciowych eksport może się nie powieść, ponieważ buforowanie zdalnych multimediów przez zbyt długi czas aktywuje w mnożniku sprawdzanie, które mają na celu wykrycie, że potok utknął. Działanie domyślne możesz zastąpić, ustawiając zasadę maxDelayBetweenMuxerSamplesMs w Transformer.Builder:

Kotlin

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

Java

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

Zaliczenie C.TIME_UNSET całkowicie powoduje całkowite usunięcie limitu czasu, ale jeśli Twoja aplikacja działa na chipachach, w których utkniesz w miejscu MediaCodec, możesz ustawić dłuższy czas oczekiwania niezerowy.

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

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

W jaki sposób Transformer jest powiązany z transkodowaniem multimediów zgodnym z platformą?

Transkodowanie zgodnych multimediów to funkcja platformy Androida dostępna na Androidzie 12 (poziom interfejsu API 31), która konwertuje multimedia o długości nieprzekraczającej minuty na formaty obsługiwane przez aplikację. Jeśli włączysz tę funkcję, odczytanie pliku multimedialnego w niezgodnym formacie spowoduje, że zostanie on transkodowany na żądanie, a wynik zostanie zapisany w pamięci podręcznej na potrzeby późniejszej operacji odczytu.

Transformer obsługuje też konwersję formatów, ale jest dostępna jako biblioteka pomocniczych, a aplikacja ma pełną kontrolę nad operacją transkodowania.

Jak mogę skrócić czas oczekiwania na eksport lub zwiększyć przepustowość?

Transformer korzysta z platformy MediaCodec do dekodowania i kodowania z akceleracją sprzętową, a do przetwarzania klatek wideo przez OpenGL. Z naszych pomiarów na typowych urządzeniach wynika, że czynnikiem ograniczającym przepustowość Transformera jest sprzętowa przepustowość MediaCodec kodera do zastosowań niezwiązanych z przetwarzaniem. Może to wpłynąć w ten sam sposób na inne implementacje. Na przykład funkcja transkodowania zgodna z platformą ma podobną wydajność do Transformer.

Podgląd debugowania aplikacji w wersji demonstracyjnej znacznie zmniejsza przepustowość, więc wyłącz ją wtedy, gdy testujesz kompilację wersji demonstracyjnej aplikacji, aby uzyskać realistyczny obraz wydajności.