我是廷轩,老规矩先说结论:使用这个库 CLMediaMetadataRetriever,传入微秒,即可获取对应的视频帧Bitmap。
一. 视频拆帧需求
近日频繁进行物体识别视频追踪算法验证,如何保证验证过程,输入数据的稳定性成为了重中之重。如果每次都是用相机获取帧数据进行算法验证,每次的手法、距离等都会成为干扰因素,所以考虑通过视频的方式,拆帧并模拟相机取帧延迟来进行数据验证测试。
二. 视频拆帧方案调查试验
1. Android官方的MediaMetadataRetriever
使用官方的MediaMetadataRetriever,无需导入第三方包,直接通过 getFrameAtTime() 方法,传入微秒,以及一个找帧的方式参数,即可获取对应的视频帧Bitmap。关键代码如下:
private var retriever: MediaMetadataRetriever? = null // 视频拆帧器
...
retriever = MediaMetadataRetriever()
retriever?.setDataSource(context, uri)
...
// 关键方法
val bitmap = retriever?.getFrameAtTime(GET_FRAME_TIME_USE_AT_TIME * 1000,
MediaMetadataRetriever.OPTION_CLOSEST)
</