В моем приложении для Android я хочу сжать видео mp4, изменив его разрешение, битрейт. Я не хочу использовать FFmpeg (потому что я не хочу использовать NDK), поэтому решил использовать API MediaCodec.
Вот мои логические шаги:
- Извлечь видеофайл с помощью MediaExtractor, а затем декодировать данные.
- Создайте новый кодер с моим новым разрешением, битрейтом и кодированием данных.
- Использование MediaMuxer для создания нового файла mp4.
Моя проблема: я не знаю, как настроить соединение между выходом декодера и входом энкодера. Я могу декодировать видео на поверхность или закодировать новое видео с поверхности. Но я не понимаю, как их соединить.
Я прочитал эти ссылки: Android MediaCodec: уменьшите размер видео mp4, Сжатие видео на Android с использованием новой библиотеки MediaCodec и пример из Bigflake: https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/DecodeEditEncodeTest.java
Может кто-нибудь дать мне ясное объяснение, что я должен делать?