Solução de problemas


Por que não consigo acessar arquivos locais no app de demonstração?

A aplicação do armazenamento com escopo do Android 11 (nível 30 da API) impede o acesso direto ao sistema de arquivos. Para testes manuais durante o desenvolvimento, é possível acessar arquivos locais adicionando a permissão de gerenciamento de armazenamento externo no manifesto do app de demonstração:

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

Em seguida, conceda a permissão usando o adb:

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

Por que a exportação falha em um dispositivo específico?

Registre um problema no Issue Tracker do Media3 com informações suficientes para reproduzir o problema. Soluções alternativas para problemas específicos do dispositivo podem ser adicionadas à biblioteca para melhorar a compatibilidade ao longo do tempo.

O Transformer é compatível com a transformação (ou gravação) de mídia remota?

O Transformer é compatível com streams progressivos remotos, incluindo contêineres de arquivos de mídia, como MP4.

Em condições de rede muito ruins, a exportação pode falhar porque o armazenamento em buffer de mídia remota por muito tempo aciona verificações no muxer que têm como objetivo identificar que o pipeline está travado. É possível substituir o comportamento padrão definindo maxDelayBetweenMuxerSamplesMs em Transformer.Builder:

Kotlin

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

Java

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

Transmitir C.TIME_UNSET remove o tempo limite completamente, mas se o app for executado em chipsets em que MediaCodec pode ficar preso, talvez seja melhor definir um tempo limite maior que zero.

O Transformer aceita entrada em 8K?

O Transformer é implementado de uma forma independente de formato, então ele não limita o processamento de vídeos em 8K. No entanto, os recursos de hardware do dispositivo podem impedir a exportação. Por exemplo, mesmo em dispositivos que podem capturar 8K, talvez não seja possível decodificar e recodificar um vídeo 8K devido ao excesso de recursos disponíveis de RAM ou codec de hardware.

Como o Transformer se relaciona com a transcodificação de mídia compatível com a plataforma?

A transcodificação de mídia compatível é um recurso da plataforma Android do Android 12 (nível da API 31) que converte mídia de até um minuto em formatos compatíveis com o app. Se você ativar o uso desse recurso, a leitura de um arquivo de mídia em um formato incompatível causará a transcodificação sob demanda, e o resultado será armazenado em cache para operações de leitura posteriores.

O Transformer também oferece suporte à conversão de formato, mas está disponível como uma biblioteca de suporte, e o app tem controle total sobre a operação de transcodificação.

Como posso reduzir a latência de exportação ou aumentar a capacidade de processamento?

O Transformer usa o MediaCodec para decodificação e codificação aceleradas por hardware e o OpenGL para processar frames de vídeo. Com base nas nossas medições em dispositivos típicos, o fator limitante na capacidade de processamento do Transformer é a capacidade de processamento do codificador de hardware MediaCodec para casos de uso sem processamento de efeitos pesados. Isso provavelmente vai afetar outras implementações da mesma forma. Por exemplo, o recurso de transcodificação compatível com a plataforma tem desempenho semelhante ao Transformer.

A visualização de depuração do app de demonstração reduz significativamente a capacidade de processamento. Portanto, desative o recurso de visualização ao testar com um build de lançamento do app de demonstração para ter uma ideia realista da performance.