Risoluzione dei problemi


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

L'applicazione forzata dello spazio di archiviazione con ambito 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"/>

Concedi quindi 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 su Issue Tracker di Media3 con informazioni sufficienti per riprodurlo. È possibile aggiungere alla libreria soluzioni alternative per problemi specifici per dispositivo per migliorare la compatibilità nel tempo.

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

Transformer supporta flussi progressivi remoti, inclusi container di file multimediali come MP4.

In condizioni di rete molto scadenti, l'esportazione potrebbe non riuscire perché il buffering dei contenuti multimediali remoti troppo lunghi attiva nel muxer controlli che consentano 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();

Se passi in C.TIME_UNSET il timeout viene rimosso completamente, ma se la tua app viene eseguita su chipset in cui MediaCodec può rimanere bloccato, puoi impostare un timeout più grande diverso da zero.

Transformer supporta l'ingresso 8K?

Transformer viene implementato in modo indipendente dal formato, pertanto non limita la gestione dei video 8K, ma le funzionalità hardware del dispositivo potrebbero impedire la riuscita dell'esportazione. Ad esempio, anche sui dispositivi in grado di acquisire l'immagine 8K, potrebbe non essere possibile decodificare e ricodificare un video a 8K perché il codec hardware o le risorse RAM disponibili potrebbero non essere superiori.

Qual è la relazione tra Transformer e la transcodifica di contenuti multimediali compatibili con le piattaforme?

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

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

Come faccio a ridurre la latenza di esportazione o ad aumentare la velocità effettiva?

Transformer si basa su MediaCodec per la decodifica e codifica con accelerazione hardware e su OpenGL per l'elaborazione dei fotogrammi video. In base alle nostre misurazioni effettuate sui dispositivi tipici, il fattore limitante nella velocità effettiva di Transformer è la velocità effettiva del codificatore MediaCodec hardware per i casi d'uso senza elaborazione di effetti intensivi. Ciò potrebbe influire sullo stesso modo su altre implementazioni. Ad esempio, la funzionalità di transcodifica compatibile con la piattaforma ha prestazioni simili a quelle di Transformer.

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