Solución de problemas


¿Por qué no puedo acceder a los archivos locales en la app de demostración?

La aplicación del almacenamiento específico de Android 11 (nivel de API 30) evita el acceso directo al sistema de archivos. Para realizar pruebas manuales durante el desarrollo, es posible acceder a los archivos locales agregando el permiso de administración del almacenamiento externo en el manifiesto de la app de demostración:

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

Luego, otorga el permiso mediante adb:

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

¿Por qué falla la exportación en un dispositivo específico?

Informa un problema en la herramienta de seguimiento de errores de Media3 con suficiente información para reproducirlo. Se pueden agregar soluciones alternativas para problemas específicos del dispositivo a la biblioteca a fin de mejorar la compatibilidad con el tiempo.

¿Transformer admite la transformación (o grabación) de contenido multimedia remoto?

Transformer admite transmisiones progresivas remotas, incluidos los contenedores de archivos multimedia como MP4.

En condiciones de red muy deficientes, la exportación puede fallar porque almacenar en búfer los medios remotos durante demasiado tiempo activa verificaciones en el combinador que tienen como objetivo identificar que la canalización está atascada. Puedes anular el comportamiento predeterminado si configuras maxDelayBetweenMuxerSamplesMs en Transformer.Builder:

Kotlin

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

Java

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

Pasar C.TIME_UNSET quita el tiempo de espera por completo, pero si tu app se ejecuta en chipsets en los que MediaCodec puede detenerse, es posible que desees establecer un tiempo de espera mayor que no sea cero.

¿Transformer admite entradas 8K?

Transformer se implementa de manera independiente del formato, por lo que no limita el manejo de video en 8K, pero es posible que las capacidades de hardware del dispositivo impidan la exportación. Por ejemplo, incluso en dispositivos que pueden capturar 8K, es posible que no sea posible decodificar y volver a codificar un video en 8K debido a que se superaron el códec de hardware o los recursos de RAM disponibles.

¿Cómo se relaciona Transformer con la transcodificación de contenido multimedia compatible con la plataforma?

La transcodificación de contenido multimedia compatible es una función de la plataforma de Android de Android 12 (nivel de API 31) que convierte contenido multimedia de hasta un minuto de duración en formatos compatibles con la app. Si aceptas usar esta función, leer un archivo multimedia en un formato incompatible hace que se transcodifique a pedido, y el resultado se almacena en caché para operaciones de lectura posteriores.

Transformer también admite la conversión de formato, pero está disponible como biblioteca de compatibilidad y la app tiene control total sobre la operación de transcodificación.

¿Cómo puedo reducir la latencia de exportación o aumentar la capacidad de procesamiento?

Transformer se basa en MediaCodec para la decodificación y codificación aceleradas por hardware, y OpenGL para procesar fotogramas de video. Según nuestras mediciones en dispositivos típicos, el factor limitante en la capacidad de procesamiento de Transformer es la capacidad de procesamiento del codificador MediaCodec de hardware para casos de uso sin procesamiento de efectos pesados. Es probable que esto afecte de la misma manera a otras implementaciones. Por ejemplo, la función de transcodificación compatible con la plataforma tiene un rendimiento similar al de Transformer.

La vista previa de depuración de la app de demostración reduce significativamente la capacidad de procesamiento, por lo que debes desactivar la función de vista previa cuando realices pruebas con una compilación de lanzamiento de la app de demostración para tener una idea realista del rendimiento.