Cómo comprimir mp4 video con MediaCodec Android?

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

Estos son mis pasos lógicos:

  1. Extraiga el archivo de vídeo con MediaExtractor y, a continuación, descodifique los datos.
  2. Crear nuevo codificador con mi nueva resolución, bitrate y codificar datos.
  3. Uso de 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 nuevo video de una superficie. Pero no entiendo cómo conectarlos.

He leído estos enlaces: Android MediaCodec: Reduzca el tamaño de vídeo mp4 , la compresión de vídeo en android utilizando 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

¿Puede alguien darme una explicación clara de lo que tengo que hacer?

He utilizado esto para ver cómo manipular vídeo en android: https://github.com/hoolrory/AndroidVideoSamples , compruebe el VideoResampler.java en la CommonVideoLibrary .

  • ¿Cómo cargar videos de la carpeta de activos? (Para reproducirlas con VideoView)
  • Mediacodec jelly-bean
  • Error de MediaMuxer "Error al detener el muxer"
  • Cómo subir un video desde un teléfono Android (como Android) mientras se está grabando
  • Aplicación de falla en la fusión de videoclips MP4
  • Vista web de Android cargando la página html5 de la tarjeta SD con videos mp4 en varios API
  • Android MP4 stream - El video no se puede reproducir
  • Moov átomo en android MeidaRecorder datos registrados
  • Cómo mezclar dos muestras de audio y codificar de nuevo a un archivo de audio usando MediaMuxer
  • Reproducción de un video local de aplicación (.mp4) en una vista web
  • Android descifrar y reproducir mp4 en tiempo de ejecución
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.