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) impide el acceso directo al sistema de archivos. Para las 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 a través de 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?

Envía un problema en el servicio de seguimiento de problemas de Media3 con suficiente información para reproducir el problema. Se pueden agregar soluciones alternativas para problemas específicos del dispositivo a la biblioteca para 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, es posible que falle la exportación porque el almacenamiento en búfer de contenido multimedia remoto durante demasiado tiempo activa verificaciones en el multiplexor que tienen como objetivo identificar que la canalización está atascada. Puedes anular el comportamiento predeterminado configurando maxDelayBetweenMuxerSamplesMs en Transformer.Builder:

Kotlin

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

Java

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

Si pasas C.TIME_UNSET, se quita el tiempo de espera por completo, pero, si tu app se ejecuta en chipsets en los que MediaCodec puede quedarse atascado, es posible que desees establecer un tiempo de espera no nulo más grande.

¿Transformer admite entradas en 8k?

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

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

La transcodificación de medios compatible es una función de la plataforma de Android desde Android 12 (nivel de API 31) que convierte medios de hasta un minuto de duración en formatos compatibles con la app. Si habilitas el uso de esta función, la lectura de 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 depende de MediaCodec para la codificación y decodificación aceleradas por hardware, y de OpenGL para procesar los fotogramas de video. Según nuestras mediciones en dispositivos típicos, el factor limitante en el rendimiento de Transformer es el rendimiento del codificador MediaCodec de hardware para los casos de uso sin procesamiento de efectos pesados. Es probable que esto afecte otras implementaciones de la misma manera. 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 el rendimiento, 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 obtener una idea realista del rendimiento.