Я ищу способ "сжать" видео mp4. Для этого я хочу уменьшить разрешение видео и/или уменьшить FPS.
После долгих исследований я думаю, что способ сделать это - использовать MediaCodec и связанные с ним API следующим образом:
- > MediaExtractor для извлечения закодированных медиаданных из файла mp4. - > MediaCodec (декодер): декодировать каждый кадр для последующей обработки. - > MediaCodec (Encoder): На данный момент я предполагаю, что там, где мы должны установить параметры MediaFormat, такие как разрешение видео, что должно помочь нам уменьшить конечный размер файла mp4. - > MediaMuxer для генерации файла mp4 (MinSDK 18, это может быть проблемой, но на данный момент... ok).
Я не хочу использовать SurfaceView/TextureView. Что касается звука, я не хочу обрабатывать его для снижения качества.
Я рассматривал все примеры здесь: http://bigflake.com/mediacodec/
Я также видел модули исходного кода CTS.
И я смотрел несколько таких проектов: https://github.com/vecio/MediaCodecDemo/blob/master/src/io/vec/demo/mediacodec/DecodeActivity.java
И, конечно же, я прочитал десятки сообщений о stackoverflow.
Проблема в том, что я еще не нашел кода, который хорошо работает для этой породы. Я попытался взять различные фрагменты кода и объединить их в проект, но на самом деле не работает.
Спасибо.