Android如何快速获取视频每秒缩略图

  1. 最近项目想要像新版微信那样只能分享10s以内的视频,需要对超过10s的视频进行裁剪和获取视频每秒的缩略图,
    裁剪压缩功能都已经实现,主要是获取视频每秒的缩略图功能,利用ffmpeg获取比较慢,需要等待很长时间,无法像微信那样进入视频编辑页面就可以直接浏览视频每秒的缩略图

  2. 利用ffmpeg获取视频每秒缩略图(每秒输出一个图像)

    ffmpeg -i input.flv -vf fps=1 out%d.png
  3. 获取的时间较长,反编译微信发现微信里面也是利用ffmpeg,是否有更快速的命令获取?

  4. 也尝试过使用MediaMetadataRetriever.getFrameAtTime获取,获取时间更加漫长

  5. 大佬求教!!!

阅读 6k
3 个回答

ffmpeg支持同时输出多种格式,可以一边录像一边输出截图,比如 ffmpeg -i /path/to/stream/file -f rawvideo -pix_fmt nv21 -s 640x480 -r 15 video.mp4 -vf fps=1 out%d.png,其中 /path/to/stream/file 是Java方面创建的文件,把从摄像机获取的视频数据写进这个文件让ffmpeg读取。-f rawvideo -pix_fmt nv21 -s 640x480 -r 15都是配置视频的参数。

新手上路,请多包涵

最快的逻辑是只读取I帧数据然后解码,解码后存为png图,但是感觉存png图又是最为耗时的过程。

这个如果在手机做是快不了的。像那种视频软件,都是隔几秒获取一帧。在线视频是从服务器拿的。

推荐问题