起因
早上看到一篇订阅号关于 github 的,突然想起来以前在一个开源项目的群里看到过群主将提交记录可视化的视频,于是有了将自己项目的提交记录也做成可视化的视频的想法。经过一上午的查找资料,终于搞定了。下面记录下过程。
介绍
Gource: 软件项目被Gource显示为一个动画树,项目的根目录在其中心。目录显示为分支,文件显示为叶子。开发人员在对项目做出贡献的时候可以看到他们在树上工作。
Gource包括对Git、Mercurial、Bazaar和SVN的内置日志生成支持。Gource还可以解析由几个第三方工具为CVS存储库生成的日志。
FFmpeg: 是领先的多媒体框架,能够解码,编码,转码,mux, demux,流,过滤和播放几乎任何人类和机器创造的东西。它支持从最晦涩的古老格式到最先进的格式。不管它们是由某个标准委员会、社区还是公司设计的。它还具有高度的可移植性:FFmpeg可以在Linux、Mac OS X、Microsoft Windows、bsd、Solaris等各种构建环境、机器架构和配置下编译、运行并通过我们的测试基础架构FATE。
前者用于处理提交日志可视化,后者用于视频处理。
安装 Gource
进入gource官网,下载gource-0.53.win64-setup后,双击安装,一路 next 直到完成。在项目中打开cmd, 执行 gource 命令,就可以看到可视化视频了。想要适配中文的话,需要更换下字体。我是复制了系统中的黑体文件到Gource安装目录里,替换了自带的字体。
删除原字体文件,将复制进来的黑体文件改名为 FreeSans.ttf
gource --title "视频左下角标题" --seconds-per-day 0.15 --viewport 1920x1080 --multi-sampling --background-colour 000000 --dir-colour 62C454 --file-font-size 12 --font-size 24 --dir-font-size 14 --user-font-size 18 --auto-skip-seconds 0.2 --stop-at-end --hide mouse --highlight-users --highlight-dirs --file-extension-fallback --file-idle-time 0 --max-user-speed 200 --filename-time 2 --highlight-colour F5BE4F --date-format "%Y-%m-%d %H:%M:%S" --output-framerate 60 --output-ppm-stream - | ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i - -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 movie.mp4
上面这个是我生成视频的参数。
各个参数的解释:
--title "视频左下角标题"
:设置视频左下角的标题。--seconds-per-day 0.15
:设置每天对应的速度(以秒为单位),0.15 表示每0.15秒钟对应一天的时间。--viewport 1920x1080
:设置视口的大小为 1920x1080 像素。--multi-sampling
:启用多重采样。这会增加渲染质量,但也会增加计算量。--background-colour 000000
:设置背景颜色为黑色(十六进制表示)。--dir-colour 62C454
:设置目录的颜色为绿色(十六进制表示)。--file-font-size 12
:设置文件名的字体大小为 12。--font-size 24
:设置文字的字体大小为 24。--dir-font-size 14
:设置目录名的字体大小为 14。--user-font-size 18
:设置用户名的字体大小为 18。--auto-skip-seconds 0.2
:设置自动跳过的时间间隔(以秒为单位),0.2 表示每隔 0.2 秒跳过一部分。--stop-at-end
:动画结束后停止播放。--hide mouse
:隐藏鼠标光标。--highlight-users
:在动画中突出显示用户。--highlight-dirs
:在动画中突出显示目录。--file-extension-fallback
:如果文件没有扩展名,则使用文件的最后修改时间作为扩展名。--file-idle-time 0
:设置文件的静止时间(以秒为单位),0 表示文件的静止时间为 0。--max-user-speed 200
:设置用户的最大速度为 200。--filename-time 2
:设置文件名在动画中的持续时间(以秒为单位),2 表示文件名在动画中持续 2 秒。--highlight-colour F5BE4F
:设置突出显示的颜色为黄色(十六进制表示)。--date-format "%Y-%m-%d %H:%M:%S"
:设置日期的格式。--output-framerate 60
:设置输出帧速率为 60 帧/秒。--output-ppm-stream -
:导出帧图片。ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i - -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 movie.mp4
:使用 FFmpeg 将帧图片转换为视频。其中,-r 60
设置视频的帧速率为 60 帧/秒,-crf 1
设置视频的质量为最高。
可通过更改参数,来降低最后生成视频的大小,比如加快每天的流速,减少帧率,质量减低等。上面命令是通过ffmpeg来生成视频的,所以还需要提前安装ffmpeg。在视频播放的时候,可以通过鼠标滚轮缩放视频,按 Esc 退出视频播放,并生成视频文件,滚轮的操作会被记录在视频中。
安装 FFmpeg
参考:juejin.cn/post/696877…