Video Classification 入门之抽帧

其实归结起来,就一句话:用好 ffmpeg 这个神器。

感觉如果硬盘好+CPU 核多活好的话,完全不用提前抽帧的(误)

先说为什么有这个事儿

我们做 Image 的时候,输入处理还算是比较简单的,读入一个图片,解码,Resize 一下,Padding 一下,完事儿。

但是 Video 不一样了:为了压缩,某些帧必须由其他帧得到(什么 A 帧、P 帧、E 帧的)。我们很难直接获取到视频中的某一帧。

所以,我们需要先将视频中的每一帧拿出来。

然后呢,这些帧实在太多了(最基本的,每秒 25 帧来说,一个 10 秒的视频就 250 帧)。为了减轻负担,只保留动作幅度比较大的部分,每秒 25 帧中我们可能只需要其中的 5 帧。

最后呢,上面的抽帧过程会产生大量的小文件——小文件简直是灾难啊。所以,我们希望尽量把小文件进行合并,形成 “假的” 视频。与真的视频不同,假视频里面的帧比较容易获取,而且只是原来视频帧的节选,体积会小一些。

然后再说说怎么干的这个事儿

一句话是,用好 ffmpeg 这个神器。

使用 ffmpeg,设置好各种参数,就能直接抽帧了。然后再用 Python 将这些帧进行合并一下,形成假视频文件就好了。

手动抽帧费时费力,所以我们希望能写个脚本,自动做这件事儿。

实验室同学写了一个脚本,我发现不太符合我的要求,于是就在其基础上魔改了一番,思路更加清晰,同时功能更加强大。然后 Release 了出来,需要的那去用就好。

所以代码呢

整个 Repo 在这里,小星星来者不拒。

当然,记得顺手给原始作者点个小星星啊~

Readme 什么的我慢慢写吧……

留下评论