短视频平台搭建,指定视频中的某一帧做为视频的封面

短视频平台搭建,指定视频中的某一帧做为视频的封面实现的相关代码
Glide4.x
Glide4.x提供了frame(@IntRange(from = 0) long frameTimeMicros)方法,可以从提取视频的第N帧作为图片加载。
缺点:如果是网络视频链接,第一次加载会非常慢。

val options = RequestOptions()
            .diskCacheStrategy(DiskCacheStrategy.ALL)
            //获得第1帧图片 这里的第一个参数 以微秒为单位
            .frame(1 * 1000 * 1000)
            .placeholder(R.drawable.pic_zwt)
            .centerCrop()
        Glide.with(this)
            .setDefaultRequestOptions(options)
            .load("http://7xjmzj.com1.z0.glb.clouddn.com/20171026175005_JObCxCE2.mp4")
            .into(image1)

MediaMetadataRetriever
MediaMetadataRetriever类提供了一个统一的接口,用于从输入媒体文件中检索帧和元数据。

val retriever = MediaMetadataRetriever()
val url = "http://7xjmzj.com1.z0.glb.clouddn.com/20171026175005_JObCxCE2.mp4"
if (url.startsWith("http")) {
    
    
 //setDataSource(String uri,  Map<String, String> headers) 是获取视频链接
   retriever.setDataSource(url, emptyMap())
} else {
    
    
 //setDataSource(String path)是获取视频文件
 retriever.setDataSource(url)
}     
//获得第10帧图片 这里的第一个参数 以微秒为单位
val bitmap = retriever.getFrameAtTime(10 * 1000 * 1000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC)
retriever.release()
image2.setImageBitmap(bitmap)

以上就是 短视频平台搭建,指定视频中的某一帧做为视频的封面实现的相关代码,更多内容欢迎关注之后的文章

猜你喜欢

转载自blog.csdn.net/yb1314111/article/details/123549161