First Frame of Video
@Composablefun 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, ) } } }}