Jetpack ComposeとMedia3で構築されたシンプルな動画編集アプリ — 広告・トラッカーなし
Androidで短い動画をトリミングしたり、音声を削除したりする必要があるたびに、まるで冒険のような体験になります。Google Playにある大半の編集アプリは、すぐにサブスクリプションを要求したり、画面の下半分に透かしを押し付けたり、カジノ広告を見せつけたりします。内置のギャラリー編集機能は、ファイルを認識できないほど再圧縮してしまうことがよくあります。
最近、開発者devhyperによるopen-video-editorを見つけました。GPLv3ライセンスの下で、モダンなAndroid開発スタックを使用してKotlinで書かれた簡潔なアプリです。
このアプリできること
このプロジェクトは、CapCutのような重量級のモバイル統合ツールと競争しようとはしていません。焦点を当てているのは、毎日必要になる基本的な操作です:
- タイムラインに沿った動画のトリミング(Trim)
- フレームの彩度低下(Grayscaleフィルター)
- 解像度とスケーリングの変更(Scale、Resolution)
- 動画を90度、180度、270度で回転(Rotate)
インターフェースはシンプルです:ギャラリーからファイルを選択し、スライダーを動かし、保存ボタンをタップするだけ。プロフィールも登録も、隠れた購入もありません。
プロジェクトの内部構造
Android開発者にとって、このリポジトリはメディア処理パイプラインの実装方法に興味があるでしょう。
かつて、Androidで動画を扱うのは頭痛の種でした:NDDK経由で重いC++ FFmpegビルドをラップするか、低レベルのMediaCodecと格闘するかでした。この作者はGoogleの公式Media3 Transformerライブラリを採用しています。
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、GitHub上のAPKリリースで配布されています。
コードを覗いたりローカルでビルドしたい場合は、標準的なクローンで十分です:
git clone https://github.com/devhyper/open-video-editor.git
プロジェクトは最新のAndroid Studioで開け、特定の外部依存関係やクローズドなAPIキーなしでビルドできます。
誰にとって有用か
パーソナルフォン用にトラッカーなしの軽量ユーティリティが必要な場合、open-video-editorは基本的な動画のトリミングと回転のニーズをカバーします。
Android向けに開発している場合、このプロジェクトはJetpack Media3 Transformerの操作の明確な例として機能します。Googleの公式ドキュメントは往々にして過度に複雑な例がありますが、ここでは小さくて完全なアプリケーションの実動コードを見ることができます。
関連プロジェクト