Skip to content

First Frame of Video

@Composable
fun VideoFirstFrame() {
var bitmap by remember { mutableStateOf<Bitmap?>(null) }
LaunchedEffect(Unit) {
bitmap = withContext(Dispatchers.IO) {
val retriever = MediaMetadataRetriever()
try {
retriever.setDataSource(videoUrl)
retriever.getFrameAtTime(1000000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC)
} catch (e: Exception) {
null
} finally {
retriever.release()
}
}
}
bitmap?.let {
Card(modifier = Modifier.padding(10.dp)) {
Column {
Text(
"Video First Frame",
fontSize = 20.sp,
fontWeight = FontWeight.Bold,
modifier = Modifier.padding(10.dp)
) Image(
bitmap = it.asImageBitmap(),
contentDescription = null,
)
}
}
}
}