LoginSignup
1
1

More than 3 years have passed since last update.

[Android]Coil の Video Frames を使ってみる

Last updated at Posted at 2020-09-27

はじめに

Coil の Video Frames を使うことで動画ファイルのあるフレーム画像を ImageView に表示できるらしい。今回はどのような感じで取得できるのか試してみたいと思う。

準備

Video Frames を使う場合には Core ライブラリに加えて Video Frames ライブラリを依存関係に追加する必要があります。次のように build.gradle に追記して Video Frames ライブラリを依存関係として追加します。

dependencies {
      
    implementation "io.coil-kt:coil:1.0.0"
    implementation "io.coil-kt:coil-video:1.0.0"
      
}

実装

raw フォルダに動画を格納する

動画ファイルが必要になるので次のように raw フォルダを作成し格納しておきます。
(対応している動画ファイルの拡張子→サポートされているメディア形式)

Image from Gyazo
Image from Gyazo

raw フォルダから動画ファイルを読み込む

まずは raw フォルダに格納したファイルの URL を生成し、load にてその url を読み込んでやります。あとは videoFrameMillis にて動画のどの秒数のフレームを表示するか指定してやれば動作します。

下記のサンプルだと fetcher で VideoFrameUriFetcher を指定してやっています。本来であれば Coil 側で動画ファイルであるか自動的に判定してくれるので指定する必要はないみたいなのですが URL を指定した場合だと上手く動作しないので追加しています。

class MainActivity : AppCompatActivity(R.layout.activity_main) {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // RAWリソースのURLを生成するa
        val url = Uri.parse("android.resource://" + packageName + "/" + R.raw.movie)

        // fetcher に VideoFrameUriFetcher を指定してやると動画からフレームを切り出してくれる
        image_view.load(url) {
            videoFrameMillis(1000)
            fetcher(VideoFrameUriFetcher(applicationContext))
        }
    }
}

Image from Gyazo

また URL だけではなく File での読み込みもできるようになっているみたいです。URLの場合には VideoFrameUriFetcher を指定しましたが File の場合は VideoFrameFileFetcher を指定してやります。

class MainActivity : AppCompatActivity(R.layout.activity_main) {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // ファイル
        val file = File("任意のファイルパス")

        // fetcher に VideoFrameFileFetcher を指定してやると動画からフレームを切り出してくれる
        image_view.load(file) {
            videoFrameMillis(1000)
            fetcher(VideoFrameFileFetcher(applicationContext))
        }
    }
}

おわりに

Coil の Video Frames では特定の動画ファイルから特定のフレームを画像として切り出すことができます。これを使えば動画ファイルの読み込み中に表示するサムネイルの取得などができそうです。使う機会が多いとは言えない機能ですが頭の片隅に覚えていれておけばどこかで使えそうだと思いました。

参考文献

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1