Skip to content

视频帧

此功能仅在 Android 上可用。

要添加视频帧支持,请导入扩展库:

kotlin
implementation("io.coil-kt.coil3:coil-video:3.3.0")

并在构建 ImageLoader 时将解码器添加到组件注册表:

kotlin
val imageLoader = ImageLoader.Builder(context)
    .components {
        add(VideoFrameDecoder.Factory())
    }
    .build()

要指定从视频中提取帧的时间,请使用 videoFrameMillisvideoFrameMicros

kotlin
imageView.load("/path/to/video.mp4") {
    videoFrameMillis(1000)  // 提取视频第 1 秒处的帧
}

要指定确切的帧号,请使用 videoFrameIndex(需要 API 级别 28):

kotlin
imageView.load("/path/to/video.mp4") {
    videoFrameIndex(1234)  // 提取视频的第 1234 帧
}

要根据视频总时长的百分比选择视频帧,请使用 videoFramePercent

kotlin
imageView.load("/path/to/video.mp4") {
    videoFramePercent(0.5)  // 提取视频时长中间处的帧
}

如果未指定帧位置,则将解码视频的第一帧。

如果请求的文件名/URI 以 有效的视频扩展名 结尾,ImageLoader 会自动检测任何视频并提取其帧。如果不是,您可以为请求显式设置 Decoder

kotlin
imageView.load("/path/to/video") {
    decoderFactory { result, options, _ -> VideoFrameDecoder(result.source, options) }
}