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)を取得
そして動画カットのアクティビティが起動します。
▼ このような画面でカットができる
そしてカット完了後、動画が次の場所に保存されます。
▼ 例えばとある端末では以下のパスに保存される
カット後にこの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も活用していきたいですね。