首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Android 获取视频缩略图(获取视频帧数据)的优化方案

speed.gif 速度优化,效果拔群。 在缩小2倍的Bitmap输出情况下 使用MediaMetadataRetriever 抽帧的速度,帧稳定在 300ms左右。...大概是200ms ,后续帧则是50ms左右。 注意:如果不缩小图片的话,建议还是使用MediaMetadataRetriever。...通过MediaMetaRetrivier来进行获取 代码较为简单,就是一个循环 MediaMetadataRetriever metadataRetriever = new MediaMetadataRetriever...通过MediaCodec和ImageReader进行获取 就是通过通过Surface,用MediaExtrator,将MediaCodec解码后的数据,传递给ImageReader。来进行显示。...来获取截图。 使用MediaMetadataRetriever的方式,因为无法配置输出的图片的大小。 但当我们只需要生成小图预览的时候, 如果我们实现做了缩放的处理。就能得到很快的速度。

4.5K30

使用ImageMagick操作gif

所以在我们公司的游戏开发中,需要一张将整个 Gif 动图的一帧拆出来的图片拼成一张精灵图交给前端,由他们来使用 JS+CSS 的能力动态地循环我们拆帧后的图片,从而形成动图的效果。...= 0; do { if ($i == $column) { $i = 0; $h++; } if($cursor == 0){ // 保存第一帧图片...通过这个方法,我们就获得了整个 GIF 图里面的全部一帧图片的信息。这时,使用 count() 方法,就可以获得图片中的所有图片帧的个数。比如我们测试的这张图片就有 51 帧。...然后就是一个循环,也就是循环那 51 张拆帧出来的图片,使用 nextImage() 不断地获取原始 GIF 图中的下一帧图片,并将他们组合保存在上面新建的背景图片中,一帧的图片位置也是通过单帧图片的宽高与行列情况计算出来的...在这段代码中,我们还保存了第一帧的图片,当然,这也是业务需要,你可以随时保存任何一张帧的图片。 最后,使用 writeImage() 保存图片。

1.5K40

利用Android系统源码中giflib实现播放gif文件

思考 一个gif有很多帧的文件图片,一帧图片的展示需要通过绘制图片的像素和每一个像素的颜色值,以及还需要知道一帧到下一帧的展示的时间。...设计 1、利用giflib的DGIFOpenFileName以文件流的形式加载gif文件,获取gif的图片结构包括:图片的宽高,像素,颜色表,像素帧,gif中的图片帧数,一帧数需要播放的时间(距离下一帧图像出现的时间...2、创建GIFBean的结构体,用来保存:第一帧到下一帧的计算一帧的延迟时间,gif图片中总共的图片帧数,当前播放的是哪一帧。...3、通过绘制一帧的像素来达到展示,利用一帧延迟时间对下一帧的图像进行播放。 4、绘制中,需要遍历一帧的图像的像素,并从gif中的颜色表中取值,然后对像素进行填色。...图片中,一帧图片的播放时长,二是保持总共多少帧图片 //返回结构体的首地址 return (jlong) gifFileType; 获取gif的宽高 JNIEXPORT jint JNICALL

1.9K153
领券