视频抽帧
从视频里取出一帧存成图片:给片子挑一张封面,或者按固定间隔批量抽帧。FFmpeg 在浏览器里按指定时刻定位并解码,图像按源分辨率保存;每张结果都会显示实际落到的时间。
- 按指定时刻定位,并显示实际落到的帧时间
- 在标签页内按源分辨率解码,文件不上传
把视频文件拖到这里
文件留在你的电脑上,不会被上传
可读取 MP4、MOV、WebM、MKV、AVI、M4V,以及 FFmpeg 认识的大多数其他格式。
还没有选择视频
先选一个视频文件。抽帧引擎要等你选完文件才会开始下载。
功能简介
从视频里取一张图看着简单,做砸也很容易。这个工具关心的是:你存下来的这张图,实际落在哪个时间点。
- 01
指定时间和实际落点都看得见
每一张都会从指定位置单独定位并解码。视频帧不一定恰好落在任意一个毫秒上,所以工具会取该位置及其之后的第一张可用帧,并标出它真正的时间。你能据此判断是否就是要的画面,而不是只看一个四舍五入后的输入值。
- 02
出图按源分辨率,不是按屏幕上的尺寸
浏览器里常见的做法是把 video 元素定位好再画进 canvas,拿到的是播放器解出来的画面、以及元素当时恰好多大就多大。这里的一帧由 FFmpeg 直接从文件解出来,4K 的素材就给你 4K 的图,除非你主动要更小的。
- 03
单张也行,扫一整段也行
可以只取一帧做封面,可以在一段范围内每隔几秒取一张,也可以让它在范围里均匀取固定张数。均匀模式取的是每个等分区间的中点,这样第一张不会落在多数录像开头那一片黑屏上。
- 04
每张图来自几秒几毫秒,都写出来
每一张都标着它真正携带的时间戳;单张抽取时,如果落点那一帧比你设的时刻稍晚,界面会明说这件事。不会有任何东西被悄悄四舍五入掉。
- 05
PNG、JPEG 或 WebP,宽度自己定
PNG 是无损的,解码出来的那一帧原样存下来;JPEG 和 WebP 则用一点画质换来小得多的体积。要做缩略图可以指定输出宽度,设得比源还宽会被忽略而不是硬放大。
- 06
全程在本地处理
FFmpeg 被编译成 WebAssembly,直接跑在标签页里。文件不上传,没有服务端的体积上限,不排队,不打水印,也不用注册账号。
如何使用
四步,从一段录像到一叠静帧。
- 01
把视频拖到页面上,或者用文件选择器打开。这时抽帧引擎开始下载,大约 31MB,只需要一次;随后工具会读出分辨率、帧率和时长。
- 02
选好抽哪些帧:单张、每隔几秒一张,或者在一段范围里均匀取固定张数。单帧模式下左右箭头会按帧间隔移动,时间也可以直接输入。
- 03
定好格式;如果要的是缩略图而不是原尺寸大图,再设一个输出宽度。PNG 是无损的,JPEG 和 WebP 体积要小得多。
- 04
点抽帧。结果出现在右侧,每张都标着来自哪个时间点,可以单张保存,也可以打包成 ZIP 一起下载。
功能说明
决定你存下来的到底是不是那一帧的那些细节。
- 按指定时刻定位,单张结果会标出实际落到的帧时间
- 支持单张、固定张数,以及在选定范围内每隔 N 秒取一张
- 均匀模式取每个等分区间的中点,避开开头那一片黑屏
- 读得到源帧率时,单帧模式下箭头按帧间隔移动
- 时间可以按秒、m:ss.ddd 或 h:mm:ss.ddd 输入
- 每张图的真实源时间戳都会显示出来,并写进文件名
- 输出 PNG、JPEG 或 WebP,两种有损格式带质量调节
- 可选输出宽度用于做缩略图,且不会把图放大到超过源尺寸
- 按源分辨率解码,而不是按预览播放器的显示尺寸
- 可以单张保存,也可以打包成 ZIP 一次拿走
- 引擎下载时显示真实字节进度,不是一条假动画
- 批量抽取中途可以停止,已经抽出来的会保留
适合哪些场景
这些场合下,本地抽一帧真图比截个屏管用。
-
给视频挑一张封面
上传页、动态、商品页都要一张封面图。在这里一帧一帧挪到没人眨眼的那一格只要几秒,而且拿到的是原分辨率的画面,不是播放器的截屏。
-
把录屏改写成文档
一段操作录屏想变成图文教程,最费事的就是配图。在你当时讲解的每个节点各抽一张,丢进文档再标注,整件事会快很多。
-
分镜表和缩略图墙
在范围内均匀取固定张数,一屏就能看清一段片子的走向。想快速摸清一段陌生录像里有什么,这比从头拖到尾快得多。
-
给缺陷报告配帧
录下来的异常,只有能指到发生的那一刻才有用。把出问题前后两帧抽出来贴上去,比丢一段没人会去拖的视频说明得多。
-
不该上传的素材
访谈素材、医疗影像、内部系统的录屏,都带着不该交给转换网站的东西。在标签页里抽帧,录像始终留在它本来就在的这台机器上。
-
做参考图和图像集
色彩参考、姿态参考,或者从素材里攒一批训练用图,起手都是按固定间隔往外抽帧。放在本地做,既不用等上传,也没有素材总量的限制。
使用建议
一次就取到对的那一帧的几个习惯。
- 先用播放器把位置大致找到,再用左右箭头微调;最后看结果旁的实际时间,确认落点
- 后面还要裁剪、标注、取色的用 PNG;直接进缩略图墙的用 JPEG 或 WebP
- 大批量之前先把输出宽度定下来,别等抽完再说,4K 素材的原尺寸静帧在一个标签页里堆得很快
- 面对陌生录像,先均匀抽十来张,比从头拖到尾快,也更容易看出该盯哪一段
- 单张抽取后看一眼标出来的时间;如果落点比你想要的晚了,那行字会直接告诉你
- 很长的素材先裁一段再扫,免得为了取其中一分钟而把整个文件读进内存
- 长视频或高分辨率素材尽量在桌面浏览器上抽,手机给标签页的内存要少得多
边界与注意事项
这个工具刻意不做的事,以及它会吃力的地方。
- 它只负责抽静帧,不会把这些帧拼成 GIF 或动图,也不做视频剪辑和导出。
- 它不替你挑帧。没有场景检测,也没有所谓的最佳帧打分,选哪一刻是你的事,所以逐帧挪动和整段扫描都做得很快。
- PNG 是无损的,但它没法撤销视频原本就有的压缩。你抽出来的每一帧,都已经带着录制时那次编码留下的痕迹。
- 单次最多 200 张,因为每一张在你下载之前都占着内存。要扫更长的范围就得分几次跑。
- 解码任何一帧之前都要先把整个视频读进内存,所以哪怕只取一张,两小时的文件也要整份加载。
- 引擎首次使用约 31MB。之后会走缓存,但在一个全新的浏览器配置里,第一次抽帧要承担这次下载。
- WebAssembly 是 32 位的,读取期间源文件整份留在内存里,所以超过大约四分之一 GB 的视频会开始不可靠。
- 有些 FFmpeg 读得好好的容器,比如装着 HEVC 的 MKV,浏览器预览放不出来。抽帧照常可用,靠时间轴和手输时间定位,只是少了会动的预览。
常见问题
在浏览器里从视频抽图时常遇到的问题。
怎么从视频里取出某一帧?
把文件拖到页面上,用滑块或者左右箭头挪到想要的时刻,点抽帧就行。会返回一张按源分辨率解码出来的图,可以存成 PNG、JPEG 或 WebP。文件不会上传,整个过程都在标签页里完成。
抽出来的图是我设定那个时间点的帧吗?
工具会从指定位置开始定位和解码,保存该位置及其之后的第一张可用帧,并把实际时间标出来。视频帧并不一定刚好落在每一个毫秒上,所以结果可能落在相邻的一帧;如果比你设定的时间稍晚,界面会直接显示,方便你往前或往后微调。
这比直接对着视频截屏好在哪?
截屏截的是播放器,不是文件。你拿到的是视频当时被显示成多大就多大,中间还叠着浏览器做的缩放和色彩处理,画面上可能还压着播放控件。这里的一帧直接从文件解出来,4K 的录像就给你一张 4K 的图,上面什么都没盖。
怎么每秒抽一帧?
切到按间隔的模式,把间隔设成 1。工具会在选定范围内逐步推进,每一步取一张,并标出各自的时间戳。单次上限是 200 张,所以很长的录像更适合分段抽,或者把间隔调大一点。
格式该选哪个?
后面还要编辑、裁剪或取色的选 PNG,它是无损的,解码出来的那一帧原样存下来。只是做缩略图或预览图的选 JPEG 或 WebP,在视频原有压缩之上再叠一层有损压缩,换来小得多的体积是划算的。同等档位下 WebP 比 JPEG 再小一点,当前主流浏览器都能读。
我的视频会被上传吗?
不会。引擎是编译成 WebAssembly 的 FFmpeg,跑在你的浏览器标签页里。文件从磁盘读进标签页内存,抽出来的图再作为下载写回去。整个过程没有任何数据经过网络,抽帧时打开网络面板就能自己确认。
一次最多能抽多少张,要花多久?
单次上限 200 张。每张都要单独定位和解码,耗时会受编码方式、分辨率、视频长度和设备性能影响。文件越大,先读入内存的等待越明显;高分辨率或长视频也更适合先缩小范围或输出宽度。
能按帧号取帧吗?
不能直接按帧号,输入和结果都以时间为准。读取到源帧率时,滑块和箭头会按一个帧间隔移动,方便在附近微调;变帧率视频尤其应该看每张图旁的实际时间。
为什么抽出来的图和预览里看到的不太一样?
预览是浏览器自己在解码和显示这段视频,被缩进一个小播放器里,还带着它自己的色彩处理。而那张图是 FFmpeg 另外按源分辨率解出来的。预览的职责是帮你找位置,不是充当最终成品。
它能自动挑出最适合当封面的一帧吗?
不能,这是有意不做的。自动场景检测挑的是与前后差异大的帧,这和挑一张好封面并不是一回事,而且要做到还得把整段视频完整解码一遍。均匀抽十来张再自己挑,只要几秒钟,拿到的也是你真正想要的那一帧。