Android MediaCodec: reduza o tamanho do vídeo em mp4

Estou procurando uma maneira de "compactar" um vídeo mp4. Para conseguir isso, quero reduzir a resolução do vídeo e / ou reduzir o FPS.

Após uma longa pesquisa, acho que a maneira de fazer isso é usar o MediaCodec e APIs relacionadas da seguinte maneira:

-> MediaExtractor para extrair dados de mídia codificados de um arquivo mp4. -> MediaCodec (decodificador): decodifique cada quadro para processamento posterior. -> MediaCodec (Encoder): Neste ponto, acho que é onde devemos estabelecer parâmetros MediaFormat, como resolução de vídeo, o que deve nos ajudar a reduzir o tamanho final do arquivo mp4. -> MediaMuxer para gerar arquivo mp4 (MinSDK 18, isso pode ser um problema, mas por enquanto ... ok).

Não quero usar um SurfaceView / TextureView. Em relação ao áudio, não quero processá-lo para reduzir a qualidade.

Eu estive vendo todos os exemplos aqui:http://bigflake.com/mediacodec/

Eu também vi módulos de código fonte do CTS.

E eu estive olhando para vários projetos como estes:https://github.com/vecio/MediaCodecDemo/blob/master/src/io/vec/demo/mediacodec/DecodeActivity.java

E é claro que li dezenas de postagens no stackoverflow.

O problema é que ainda não encontrei nenhum exemplo de código que funcione bem para esse adágio. Tentei pegar vários pedaços de código e reuni-los em um projeto, mas na verdade não funciona.

Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion