无需上传, 100% 本地处理, 无需账户

文章

提取视频帧用于缩略图和联系页

视频是静止图像的序列。从中提取一张图像即可得到缩略图、封面或联系页。了解视频编解码器如何存储帧以及哪些时刻值得捕捉,能让提取结果更清晰、更可预测。

帧与帧率

视频文件是以足够快的速度显示以产生运动幻觉的静止图像序列。每秒显示的图像数量称为帧率,以 fps 表示。常见值为:电影 24 fps、PAL 广播 25 fps、网络视频 30 fps、游戏录像 60 fps。以 24 fps 计算,一部两小时的电影包含约 172,800 个单独帧。每帧对应一个时间点;提取一帧即可将该时刻固定为独立图像。帧率还决定了批量提取时每秒获得的帧数:以 30 fps 计算,提取一分钟视频的每一帧会得到 1,800 张图像,通常远超实际需要。以更低的帧率提取,或者在支持该功能的工具中每隔 N 帧提取一次,是减少数量同时覆盖完整时长的实用方法。

时间轴条形图显示每秒 24 个独立帧,每帧下方可见帧号和时间戳。

关键帧与插值帧

现代视频编解码器不会将每一帧都存储为完整图像。它们使用三种帧类型来节省空间。I-frame(也称为关键帧)是完整的独立图像。P-frame 只存储自上一个 I-frame 或 P-frame 以来发生变化的像素。B-frame 存储相对于前一帧和后一帧的变化,重建时需要两侧的帧。由于 P-frame 或 B-frame 本身不完整,解码需要周围的参考帧。如果这些参考帧包含运动模糊或过渡效果,重建后的图像会继承该模糊。相比之下,I-frame 可独立解码。它始终清晰,因为不借用任何相邻帧的信息。提取用于缩略图的帧时,落在 I-frame 上能获得最清晰的结果。大多数编解码器在场景切换处放置 I-frame,这些地方自然是清晰的起点。

选择合适的时刻

即使是解码良好的 I-frame,如果捕捉的时刻不好,也可能成为糟糕的缩略图。以下几个因素会降低缩略图质量。运动模糊发生在相机或主体在曝光期间快速移动时;产生的拖影使帧看起来柔和,即使解码是干净的。在过渡中间捕捉的转场帧,包含两张重叠的图像,很少能作为独立图片使用。曝光不足或过度曝光的帧(场景开始时自动曝光尚未稳定时很常见)会丢失阴影或高光中的细节。最佳缩略图帧来自动作或表情清晰、光线好、相机稳定的时刻。用能显示精确时间戳的播放器浏览视频,可以在提取前找到这些时刻。在播放器中暂停看起来好的帧,导出为静态图像通常也会好看。

视频播放器暂停在主体动作中光线充足、画面稳定的帧上,角落显示时间戳。

导出:分辨率、格式与每隔 N 帧

提取帧时,导出图像应与视频的原始分辨率匹配。放大会引入插值伪影;缩小则会丢弃您可能需要的像素。1080p 视频产生 1920x1080 像素的图像,4K 视频产生 3840x2160 像素的图像。对于格式,PNG 完整保留每个像素,是需要最大清晰度以便编辑或进一步缩放时的正确选择。JPEG 体积更小,适合预览或分享,但会在锐利边缘引入压缩伪影。如果您要制作联系页(覆盖完整时长的代表性帧网格),按固定帧率提取而不是抽取每一帧才是标准做法:从 30 fps 的源素材中以每秒 1 帧提取,可以得到每秒一张图像;更高的帧率(如 5 或 10 fps)则能提供更密集的图像集用于细致检查。具体帧率取决于您需要多少细节与希望处理多少张图像之间的平衡。

使用 video-extract-frames 在本地完成

Sunasty 上的 video-extract-frames 工具使用编译为 WebAssembly 的 FFmpeg 完全在浏览器中解码您的视频。您拖入文件,选择每秒 1 到 30 帧之间的帧率,选择 PNG 或 JPEG,工具会以该帧率在浏览器内存中解码帧,并以每次最多 300 帧的上限提供各自独立的下载。您的视频文件不会离开您的设备。整个过程中没有任何字节发送到服务器。这对包含个人或敏感内容的视频非常重要:家庭录像、采访视频或编辑前的原始素材。浏览器将视频加载到内存中的虚拟文件系统,运行 FFmpeg 解码,然后将图像返回给您。代价是解码由您的 CPU 通过 WebAssembly 完成,而非专用硬件,因此长视频或高分辨率源素材会比原生应用耗时更长。对于提取几帧或从短视频生成联系页,速度是可以接受的。

本文涉及的工具

常见问题

为什么我提取的帧看起来模糊?

最常见的原因是在运动时刻落在了 P-frame 或 B-frame 上。这些帧存储的是差异而非完整图像,源素材中的运动模糊会带入解码结果。尝试提取最近的 I-frame(对应场景切换或周期性关键帧),以获得更清晰的结果。

应该将帧导出为 PNG 还是 JPEG?

如果计划编辑帧、放大它或在压缩伪影会很明显的场景中使用,选择 PNG。如果需要较小的文件用于快速分享或预览,且可以接受轻微的质量损失,选择 JPEG。对于以固定小尺寸显示的缩略图,合理质量设置的 JPEG 通常就够了。

如何从视频制作联系页?

选择一个足够低的帧率,让静帧数量保持在可控范围内,而不是设置单个时间戳。对于一段两分钟的视频,每秒 1 帧会得到约 120 帧,密度足够从中挑选出合适的网格;无论如何,单次输出都以 300 帧为上限。目前没有比 1 fps 更低的帧率可选,所以如果想要更稀疏的网格,就以 1 fps 提取,再只保留你想用于最终网格的那些帧。