Risoluzione dei problemi


Perché non riesco ad accedere ai file locali nell'app demo?

L'applicazione dello spazio di archiviazione isolato a partire da Android 11 (livello API 30) impedisce l'accesso diretto al file system. Per i test manuali durante lo sviluppo, è possibile accedere ai file locali aggiungendo l'autorizzazione per la gestione dello spazio di archiviazione esterno nel manifest dell'app demo:

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

Quindi, concedi l'autorizzazione tramite adb:

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

Perché l'esportazione non riesce su un dispositivo specifico?

Segnala un problema nel tracker dei problemi di Media3 fornendo informazioni sufficienti per riprodurlo. Le soluzioni alternative per i problemi specifici dei dispositivi possono essere aggiunte alla libreria per migliorare la compatibilità nel tempo.

Transformer supporta la trasformazione (o la registrazione) di contenuti multimediali remoti?

Transformer supporta gli stream progressivi remoti, inclusi i contenitori di file multimediali come MP4.

In condizioni di rete molto scarse, l'esportazione potrebbe non riuscire perché il buffering dei contenuti multimediali remoti per un periodo di tempo troppo lungo attiva controlli nel muxer che hanno lo scopo di identificare che la pipeline è bloccata. Puoi ignorare il comportamento predefinito impostando maxDelayBetweenMuxerSamplesMs su Transformer.Builder:

Kotlin

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

Java

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

L'inserimento di C.TIME_UNSET rimuove completamente il timeout, ma se la tua app viene eseguita su chipset in cui MediaCodec può bloccarsi, ti consigliamo di impostare un timeout maggiore diverso da zero.

Transformer supporta l'input 8K?

Transformer è implementato in modo indipendente dal formato, quindi non limita la gestione dei video 8K, ma le funzionalità hardware sul dispositivo potrebbero impedire l'esportazione. Ad esempio, anche sui dispositivi in grado di acquisire video in 8K, potrebbe non essere possibile decodificare e ricodificare un video in 8K a causa del superamento del codec hardware o delle risorse RAM disponibili.

Qual è il rapporto tra Transformer e la transcodifica in contenuti multimediali compatibili con la piattaforma?

La transcodifica multimediale compatibile è una funzionalità della piattaforma Android a partire da Android 12 (livello API 31) che converte i contenuti multimediali della durata massima di un minuto nei formati supportati dall'app. Se accetti di utilizzare questa funzionalità, la lettura di un file multimediale in un formato non compatibile ne causa la transcodifica on demand e il risultato viene memorizzato nella cache per le operazioni di lettura successive.

Transformer supporta anche la conversione del formato, ma è disponibile come libreria di supporto e l'app ha il controllo completo dell'operazione di transcodifica.

Come faccio a ridurre la latenza di esportazione o aumentare il throughput?

Transformer si basa su MediaCodec per la decodifica e la codifica con accelerazione hardware e su OpenGL per l'elaborazione dei frame video. In base alle nostre misurazioni sui dispositivi tipici, il fattore limitante del throughput di Transformer è il throughput del codificatore hardware MediaCodec per i casi d'uso senza elaborazione di effetti pesanti. È probabile che ciò influisca anche su altre implementazioni. Ad esempio, la funzionalità di transcodifica compatibile con la piattaforma ha un rendimento simile a Transformer.

L'anteprima di debug dell'app demo riduce significativamente il throughput, quindi disattiva la funzionalità di anteprima quando esegui il test con una build di rilascio dell'app demo per avere un'idea realistica delle prestazioni.