其实归结起来,就一句话:用好ffmpeg这个神器。
感觉如果硬盘好+CPU核多活好的话,完全不用提前抽帧的(误)
先说为什么有这个事儿
我们做Image的时候,输入处理还算是比较简单的,读入一个图片,解码,Resize一下,Padding一下,完事儿。
但是Video不一样了:为了压缩,某些帧必须由其他帧得到(什么A帧、P帧、E帧的)。我们很难直接获取到视频中的某一帧。
所以,我们需要先将视频中的每一帧拿出来。
然后呢,这些帧实在太多了(最基本的,每秒25帧来说,一个10秒的视频就250帧)。为了减轻负担,只保留动作幅度比较大的部分,每秒25帧中我们可能只需要其中的5帧。
最后呢,上面的抽帧过程会产生大量的小文件——小文件简直是灾难啊。所以,我们希望尽量把小文件进行合并,形成“假的”视频。与真的视频不同,假视频里面的帧比较容易获取,而且只是原来视频帧的节选,体积会小一些。
然后再说说怎么干的这个事儿
一句话是,用好ffmpeg这个神器。
使用ffmpeg,设置好各种参数,就能直接抽帧了。然后再用Python将这些帧进行合并一下,形成假视频文件就好了。
手动抽帧费时费力,所以我们希望能写个脚本,自动做这件事儿。
实验室同学写了一个脚本,我发现不太符合我的要求,于是就在其基础上魔改了一番,思路更加清晰,同时功能更加强大。然后Release了出来,需要的那去用就好。
所以代码呢
整个Repo在这里,小星星来者不拒。
当然,记得顺手给原始作者点个小星星啊~
Readme什么的我慢慢写吧……
发表回复