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.