摘要

发现个工具 acaudwell/Gource,可以基于 Git 等版本控制系统的提交记录生成动态视频;

2021 年开始使用 Markdown 文件写博客,试着生成了一下视频;「wdssmq/Markdown-To-Z-Blog

完整记录有点长,只截取了 2023 年开始至今的部分(2023-01-02 - 2023-06-04),时长 03:3316.4G ppm664MB mp4

换算下完整版本大概会有 15 分钟?文件大小的话。。emmm

到时可能试下 265 编码,,配 BGM 好像也很麻烦。。

下载

这边是在 Windows 下使用;

Gource - a software version control visualization tool:

https://gource.io/

↑ 官网有这东西的 Win64 安装包/解压版,解压版需要自行添加环境变量;

Download FFmpeg:

https://ffmpeg.org/download.html

↑ 然后好像还要准备 FFmpeg,上边页面中「More downloading options」>「Get packages & executable files」中下载 Windows 版本的 FFmpeg,解压后把 bin 文件夹路径添加到环境变量;

使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 查看帮助
gource -help

# 下边命令在 md2zb 项目路径下执行,使用的 shell 是 Git Bash

PPM_FILE=/d/md2zb.ppm
MP4_FILE=/d/md2zb.mp4
# 输出 ppm 文件
gource -f -1280x720 -s 4 -r 30 \
--date-format "%Y-%m-%d %H:%M:%S" \
--start-date '2023-01-02 12:24:00 +0800' \
--stop-date '2023-06-04 15:48:42 +0800' \
-o $PPM_FILE
# 生成视频
ffmpeg -y -r 30 -f image2pipe -vcodec ppm -i $PPM_FILE \
-vcodec libx264 -preset medium -pix_fmt yuv420p -crf 4 \
-threads 0 -bf 0 $MP4_FILE
# ffmpeg 命令基于 Gource 示例修改, -r 30 是帧率,-crf 4 是画质,建议范围(1-17),较低的值表示更高的质量和更大的文件大小;
# 其他参数就不太懂了。。

Gource 可以指定某一起止区间的提交记录,对应参数格式为 --start-date 'YYYY-MM-DD hh:mm:ss +tz' --stop-date 'YYYY-MM-DD hh:mm:ss +tz',其中 +tz 为时区,如 +0800

下边命令用于获取指定提交的时间并应用格式化:

1
2
3
4
5
# git 获取指定提交的时间并应用格式化
git log 3426336e6b944188f2507ecbc518ae4df07098a7 -1 --pretty=format:%cd --date=format:'%Y-%m-%d %H:%M:%S +0800'
git log 8b9ff137308a74cae7f6520b3f09d25a3a5aa785 -1 --pretty=format:%cd --date=format:'%Y-%m-%d %H:%M:%S +0800'
# git log <commit_sha> -1 --pretty=format:%cd --date=format:'%Y-%m-%d %H:%M:%S'

Docker 使用

有一个 Docker 封装的 Gource 镜像:「sandrokeil/docker-files/tree/master/gource

可以较快捷的使用,并且可以自动添加音乐文件;

参考

Controls · acaudwell/Gource Wiki

https://github.com/acaudwell/Gource/wiki/Controls


Videos · acaudwell/Gource Wiki

https://github.com/acaudwell/Gource/wiki/Videos#windows


Gource 版本可视化工具 使用手册 - Debug 客栈
https://blog.debuginn.cn/linux-tools-gource/


聊聊代码仓库可视化:gource 篇 - 知乎

https://zhuanlan.zhihu.com/p/512355700