【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...

相关推荐
int WINGsssss14 小时前
Git使用
git
用户07605303543816 小时前
Git Revert:安全移除错误提交的方式
git
Good_Starry1 天前
Git介绍--github/gitee/gitlab使用
git·gitee·gitlab·github
云端奇趣1 天前
探索 3 个有趣的 GitHub 学习资源库
经验分享·git·学习·github
F_D_Z2 天前
【解决办法】git clone报错unable to access ‘xxx‘: SSL certificate problem:
网络·git·网络协议·ssl
等风来不如迎风去2 天前
【git】main|REBASE 2/6
git
艾伦~耶格尔2 天前
IDEA 配置 Git 详解
java·ide·git·后端·intellij-idea
云兮杜康2 天前
IDEA中用过git之后文件名颜色全变红
java·git·intellij-idea
睡不醒的小泽2 天前
git merge 和 git rebase
git
艾伦~耶格尔2 天前
Git 下载及安装超详教程(2024)
git·gitee·码仓