動画のカット用ライブラリAndroid-video-trimmerを使ってみた【Java/Kotlin】

Androidアプリ開発の話

こういう感じで動画カット機能を実装したい

  • ユーザーに動画を端末から選ばせる
  • カットの始点・終点時間を選択させる
  • それを別動画ファイルとして保存

探したらピッタリなライブラリがありました。

その名も Android-Video-Trimmer というライブラリ

MITライセンスだから安心して使えるし、
そのAndroid-vide-trimmerの使い方コード例を記録します

1.まずAndroid-Video-Trimemrをインストールする

Android Studio上での手順です。

まずアプリレベルのbuild.gradleを開きます。

▼ そこに次のライブラリを追加

次にプロジェクトレベルのbuild.gradleを開きます。

▼ 次のようにrepositoryを追加する

あとは[Sync Now]を押して同期させれば完了

2.動画取得&トリマー起動用のActivityResultLauncher作成

ここからはActivity上でのコードです。

カット対象の動画を選択させないといけません。

そのために次のコードを書きました。

▼ 動画取得&トリマー起動のActivityResultLauncher

▼ そしてこのランチャーを次コードで起動させる

※ Kotlinによるコード

細かい所はコメントなどを参照

ひとまずユーザーから動画を選んでもらうため、 Intent.ACTION_OPEN_DOCUMENT  からファイルピッカーを起動させてます。

▼ ACTION_OPEN_DOCUMENTの詳細/別の使用例

単一・複数のファイルを開くのに便利なAPIです。

今までは onActivityForResult  でコールバックを受け取ってたけど、これからはActivityResultLauncherを使うのが推奨のやり方みたいです。(従来の方法もdeprecatedだけど使えるので心配なし)

3.カット・トリミングされた動画の場所(URI)を取得

そして動画カットのアクティビティが起動します。

▼ このような画面でカットができる

AndroidエミュレータでAndroid-video-trimmerによる動画トリミングを試してるときの様子

そしてカット完了後、動画が次の場所に保存されます。

▼ 例えばとある端末では以下のパスに保存される

カット後にこのURLを取得したいですよね?

そのために次のようなコードが書けます。

▼ カット後に保存された動画URIを取得コード

このコードのように Uri.parse(TrimVideo.getTrimmedVideoPath(result.data))  から保存された動画URIを取得することができます。

あとはその動画をよしなに処理してください

4.Android12以降でも動作することは確認済み(動画)

ちなみに互換性についてです。

少なくともAndroid12でもしっかり動きました。

▼ 実際の動画トリミングの様子

ここに動画は張りたくないのでnoteを利用しました。

マウス表示から分かるようにエミュレータです。

実機確認がベストなのは承知ですが、動画・画像関係ならエミュレータでも十分ですね。ただし特定分野(例えば3Dモデル・CG描画)はエミュレータでは役に立たない場合が多いです。

今回はひとまずエミュレータで確認済み

Android12(APIレベル31)でも動作してくれます

以上、Android-video-trimmerについてでした。ではまた

5.ちなみに動画のメタ情報の取得について

この記事とは直接は関係ないです。

でもカット動画のメタ情報が知りたい場面もあるはず

  • 幅や高さなどのサイズ
  • フレームレート(FPS)
  • ビットレート(BPS)
  • 再生時間(マイクロ秒)

こういうメタ情報の取得にライブラリは不要です。

▼ 動画フレームレート・ビットレートを取得する方法

取得にはMediaExtractorというAPIを使います。

こういった標準APIも活用していきたいですね。