- Por que não consigo acessar arquivos locais no app de demonstração?
- Por que a exportação falha em um dispositivo específico?
- O Transformer oferece suporte à transformação (ou gravação) de mídia remota
- O Transformer é compatível com entrada 8k?
- Como o Transformer se relaciona com a transcodificação de mídia compatível com plataformas?
- Como posso reduzir a latência de exportação ou aumentar a capacidade de processamento?
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 para gerenciar armazenamento externo no manifesto do app de demonstração:
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
Em seguida, conceda a permissão via 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 da Media3 com informações suficientes para reproduzi-lo. 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 multiplexador para
identificar se 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();
A transmissão de C.TIME_UNSET
remove totalmente o tempo limite, mas se o app for executado em
chipsets em que MediaCodec
possa ficar travado, defina um tempo limite maior
diferente de zero.
O Transformer oferece suporte para entrada em 8K?
O Transformer é implementado sem relação com o formato, ou seja, não limita o processamento de vídeos em 8K, mas os recursos de hardware no dispositivo podem indicar que a exportação não será bem-sucedida. Por exemplo, mesmo em dispositivos que podem capturar 8K, talvez não seja possível decodificar e recodificar um vídeo em 8K devido ao excesso do codec de hardware ou dos recursos de RAM disponíveis.
Como o Transformer se relaciona com a transcodificação de mídia compatível com plataformas?
A transcodificação de mídia compatível é um recurso da plataforma Android do Android 12 (nível 31 da API) 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 vai fazer com que ele seja transcodificado sob demanda, e o resultado será armazenado em cache para operações de leitura futuras.
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 depende do MediaCodec
para decodificação e
codificação aceleradas por hardware, e do OpenGL para processar frames de vídeo. Com base em nossas medições em dispositivos comuns, o fator limitante na capacidade do transformador é a capacidade do codificador de MediaCodec
do hardware, para casos de uso sem processamento de efeitos pesados. É provável que isso afete outras implementações da mesma maneira. Por
exemplo, o recurso de transcodificação compatível com a plataforma tem um desempenho semelhante ao
Transformer.
A visualização de depuração do app de demonstração reduz significativamente a capacidade. Por isso, desative o recurso de visualização ao testar com um build de lançamento do app de demonstração para ter uma ideia realista do desempenho.