🎥

Flutterで動画なら覚えるパッケージ

2023/03/31に公開

Flutterで写真も動画も扱うぜ

写真や動画を扱うスマホアプリを開発したい場合、iOSならAVなんちゃら、AndroidならMediaなんちゃらってAPIを覚えて使うのが基本でした。でもFlutterアプリだったら可能な限り、せめて基本的な処理だけでもネイティブAPIを使わずに済ませたい。というわけでDartだけで使えるパッケージ挙げてみます。全部pub.devで公開されているパッケージで、iOSとAndroid実機で実際に動くのを確認してます。

まずは基本

https://pub.dev/packages/camera

静止画撮影や動画録画、そしてプレビュー用のWidgetを用意しています。高機能カメラアプリを作るには機能が足りてないかもだが、とりあえずアプリに撮影機能を付けたいなら十分すぎる。FlutterなのでオリジナルUIを上に重ねるのも簡単。

https://pub.dev/packages/image_picker

ちょっと設定するだけで写真や動画の選択画面を出せます。アルバム機能命のアプリでもない限りこれ。

メタデータを取得したい

https://pub.dev/packages/exif

写真データのExif情報を取得します。読み込んだmapはタグ名がキーになってるので、Exifタグを知ってないと困るのがちょっとめんどい。

https://pub.dev/packages/flutter_video_info

動画調べたいならこっち。基本的な情報しか取れないけどプロパティになってるのでタグ名とか覚える必要なし。

再生したい

静止画の表示についてはFlutterならどうにでも出来るけど、

https://pub.dev/packages/cached_network_image

読み込んだデータはキャッシュさせたいならこれ。ただしこいつはflutter_cache_manager使ってて、さらにflutter_cache_managerは色々使ってるので注意が必要かもしれない。

動画の場合は、

https://pub.dev/packages/video_player

コード読むとかなり面白いことやってるけど、そんなのは一切考えずFlutterのWidgetとして動画を再生出来る、という理解だけで使えるのが良い。だけどUIとか自分で作るのもめんどくさいならさらに、

https://pub.dev/packages/chewie

iOSとAndroidで勝手にそれっぽいUIを付けてくれるプレイヤー。再生メインのアプリ作るとかじゃなければ十分すぎる。

小さくしたい

https://pub.dev/packages/flutter_image_compress

アプリで扱うには大きすぎる画像を指定した品質まで落としたり、解像度を落としたり、PNGで保存したり出来る。サムネイル画像作るときにも使える。

https://pub.dev/packages/video_compress

静止画ではなく動画を圧縮したいならこっち。ffmpeg使ってないので気楽に使えます。動画からサムネイル取得も可能。

おまけ

https://pub.dev/packages/async

動画のような長大データを扱うような時は知っておくと便利かもしれない。ChunkedStreamReaderとか。

Discussion