- Dlaczego nie mam dostępu do plików lokalnych w aplikacji w wersji demonstracyjnej?
- Dlaczego eksportowanie nie działa na konkretnym urządzeniu?
- Czy Transformer obsługuje przekształcanie (lub nagrywanie) zdalnych multimediów?
- Czy Transformer obsługuje dane wejściowe w rozdzielczości 8K?
- Jaki związek ma Transformer z transkodowaniem zgodnych multimediów na platformie?
- Jak mogę zmniejszyć opóźnienie eksportu lub zwiększyć przepustowość?
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.