Простой видеоредактор на Jetpack Compose и Media3 без рекламы и трекеров
Каждый раз, когда нужно обрезать короткое видео на Android или убрать из него звук, начинается квест. В Google Play большинство редакторов сразу требуют подписку, лепят водяной знак на пол-экрана или заставляют смотреть рекламу казино. Встроенные редакторы в галереях часто пережимают файл до неузнаваемости.
Недавно наткнулся на open-video-editor от разработчика devhyper. Это лаконичное приложение под лицензией GPLv3, написанное полностью на Kotlin с использованием современного стека Android-разработки.
Что умеет приложение
Проект не пытается конкурировать с тяжелыми мобильными комбайнами вроде CapCut. Здесь фокус сделан на базовых манипуляциях, которые нужны каждый день:
- Обрезка видео по таймлайну (Trim)
- Обесцвечивание кадра (фильтр Grayscale)
- Изменение разрешения и масштабирование (Scale, Resolution)
- Поворот видео на 90, 180 или 270 градусов (Rotate)
Интерфейс сделан прямолинейно: выбираете файл из галереи, двигаете ползунки, нажимаете кнопку сохранения. Никаких профилей, регистрации или скрытых покупок.
Как устроен проект внутри
Для Android-разработчиков репозиторий интересен в первую очередь тем, как в нем реализован пайплайн работы с медиа.
Раньше работа с видео на Android превращалась в головную боль: приходилось либо оборачивать тяжелые C++ сборки FFmpeg через NDK, либо страдать с низкоуровневым MediaCodec. Здесь автор взял официальную библиотеку Media3 Transformer от Google.
Media3 Transformer берет на себя аппаратное кодирование и декодирование, синхронизацию дорожек и наложение графических эффектов через OpenGL шейдеры. Если посмотреть в исходники, обработка видео укладывается в лаконичные вызовы:
val editedMediaItem = EditedMediaItem.Builder(mediaItem)
.setEffects(
Effects(
listOf(audioProcessor),
listOf(presentation, rgbFilter)
)
)
.build()
val transformer = Transformer.Builder(context)
.setVideoMimeType(MimeTypes.VIDEO_H264)
.build()
transformer.start(editedMediaItem, outputPath)
Интерфейс целиком сверстан на Jetpack Compose. Кодовая база чистая, без нагромождения слоев и устаревших XML-разметок. Это хороший референс, если вам нужно прикрутить простую обработку видео в свой проект и не хочется изобретать колесо.
Где взять и как запустить
Проект распространяется через F-Droid, IzzyOnDroid, Google Play и в виде APK-релизов на GitHub.
Если хотите поковыряться в коде или собрать проект локально, достаточно стандартного клонирования:
git clone https://github.com/devhyper/open-video-editor.git
Проект открывается в последней версии Android Studio и собирается без специфических внешних зависимостей или закрытых ключей API.
Кому проект пригодится
Если вам нужна легковесная утилита без трекеров на личный телефон, open-video-editor закрывает базовые потребности нарезки и поворота роликов.
Если вы пишете под Android, проект послужит наглядным примером работы с Jetpack Media3 Transformer. В официальной документации Google примеры часто перегружены, а тут можно посмотреть на рабочий продакшен-код небольшого законченного приложения.
