【git】使用 Gource 和 FFmpeg 将提交记录可视化

起因

早上看到一篇订阅号关于 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 命令,就可以看到可视化视频了。可通过添加参数,可加快进度及生成视频,具体参数含义,可查看官方文档。

js 复制代码
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。

安装 FFmpeg

  1. 进入FFmpeg官网, 鼠标移入Windows系统图标,点击Windows builds from gyan.dev
  2. 下载release builds中的最新版本。
  3. 解压后,进入 bin文件夹,复制路径,去配置环境变量

参考:juejin.cn/post/696877...

相关推荐
高山莫衣5 小时前
git rebase多次触发冲突
大数据·git·elasticsearch
码农藏经阁5 小时前
工作中常用的Git操作命令(一)
git
kobe_OKOK_6 小时前
【团队开发】git 操作流程
git·elasticsearch·团队开发
码农垦荒笔记6 小时前
Git 安装闭坑指南(仅 Windows 环境)
windows·git
CC码码15 小时前
管理你的多个 Git 密钥(多平台多账号)
git·gitlab·github
CC码码15 小时前
管理你的多个 Git 密钥(单平台多账号)
git·gitlab·github
大卫小东(Sheldon)15 小时前
GIM 1.5发布了! 支持Windows系统了
git·ai·rust
flying jiang16 小时前
将大仓库拆分为多个小仓库
git
李boyang10 天前
Git(四):远程操作
git
荻野泽溪10 天前
Git新建分支并同步到远程
git