Flutter 视频封面(含源代码)
结论: 用video_thumbnail库,我的github demo需求视频封面的列表两个开源方案1. video_thumbnail 库满足列表使用(就用它了)1. video_player 库可以获取封面,实际就是取帧嘛但VideoPlayer不能new多个实例,如果简单的用十几个VideoPlayer,就OOM了适合一张封面 那种情景好处就是官方推得,兼容性啥的肯定好。(要是做成一个Vid
·
结论: 用video_thumbnail库,我的github demo
需求
视频封面的列表
两个开源方案
1. video_thumbnail 库
- 满足列表使用(就用它了)
- 实现:用桥调用的 Android、IOS SDK里的API,生成一个Bitmap。(之前都不知道Android有这个API)
- Android注意下编译版本compileSDkVersion,目前是要27,plugin里做了API适配。 和你项目不符,就直接copy代码吧
实际遇到的问题
方案先行: copy plgin代码到项目中,在修复编译报错。
原因:
- plugin适配了AndroidX,调用了AndroidX的 NoNull注解。这个我们项目没适配
- plugin的Android compileSDKVersion是27,我们项目是26.导致找不到27的类。其实没问题。因为compileSDKVersion不对运行时做影响, 但成熟大项目,短时间也升不了。
综上决定 copy Plugin的代码,改改写到程序里,然后改报错代码。 也就IOS代码、Android一个utils类。再加个Flutter里的桥。很简单。。
Android 取帧的方法
if (android.os.Build.VERSION.SDK_INT >= 27 && targetH != 0 && targetW != 0) {
// API Level 27
bitmap = retriever.getScaledFrameAtTime(timeMs * 1000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC, targetW, targetH);
} else {
bitmap = retriever.getFrameAtTime(timeMs * 1000);
1. video_player 库
- 适合一张封面 那种视频预览(不适合相册式的预览,除非二次开发)
- 好处就是官方推得,兼容性啥的肯定好。(要是做成一个VideoPlayer轮流使用,那肯定相当可以,不过有开发成本)
更多推荐
已为社区贡献2条内容
所有评论(0)