android compression mp4 mediacodec

¿Cómo comprimir video mp4 usando MediaCodec Android?



compression (1)

En mi aplicación de Android, quiero comprimir el video mp4 cambiando su resolución, bitrate. No quiero usar FFmpeg (porque no quiero usar NDK), así que decidí usar la API de MediaCodec.

Aquí están mis pasos lógicos:

  1. Extraiga el archivo de video con MediaExtractor, luego decodifique los datos.
  2. Crear un nuevo codificador con mi nueva resolución, bitrate y codificar datos.
  3. Usando MediaMuxer para crear un nuevo archivo mp4.

Mi problema es: no sé cómo configurar la conexión entre la salida del decodificador y la entrada del codificador. Puedo decodificar el video a una superficie o codificar un video nuevo desde una superficie. Pero no entiendo cómo conectarlos.

Leí estos enlaces: MediaCodec de Android: reduce el tamaño del video mp4 , la compresión de video en Android con la nueva biblioteca de MediaCodec y el ejemplo de Bigflake: https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/DecodeEditEncodeTest.java

¿Alguien puede darme una explicación clara de lo que tengo que hacer?