# 如何给你的代码祝寿

> 最近 XRender 3 岁了，之前玩过的 gource 和 ffmpeg，想着可以用这两个库给她开源这一路来的历程当做一个故事给播放出来。

- 发布日期: 2022-07-09
- Author: Tw93
- HTML: https://tw93.fun/2022-07-09/code.html
- English translation: https://tw93.fun/en/2022-07-09/code.md
- 全部文章: https://tw93.fun/posts.md

---

最近 XRender 3 岁了，之前玩过的 gource 和 ffmpeg，想着可以用这两个库给她开源这一路来的历程当做一个故事给播放出来。

{::nomarkdown}
<div class="video-container">
<iframe width="1920" height="1080" src="https://www.youtube.com/embed/pDWNb2ltJQE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
{:/nomarkdown}

*建议戴耳机全屏看，有一种「守得云开见月明」的感觉，对于技术同学很有看电影听故事的感觉。*
​

### 很简单，你也可试试

1、准备工作，安装 [gource](https://github.com/acaudwell/Gource)、[ffmpeg](https://ffmpeg.org/) 这两个库，前者用于处理提交日志可视化，后者用于视频处理。需要让 gource 支持中文字体，Homebrew 安装可能很慢，国内镜像提速试试这个 [加速地址](https://zhuanlan.zhihu.com/p/111014448)。

```bash
// 安装
brew install gource
brew install ffmpeg

// 让 gource 支持中文字体
rm /usr/local/var/homebrew/linked/gource/share/gource/fonts/FreeSans.ttf
ln -s /System/Library/Fonts/Hiragino\ Sans\ GB.ttc /usr/local/var/homebrew/linked/gource/share/gource/fonts/FreeSans.ttf
```

2、找一个你最喜欢的带 git 管理的项目，命令行进入本地文件夹根目录，复制如下命令回车，就可以看到效果和生成视频了。

```bash
gource \
--title "标题" \
--seconds-per-day 0.1 \
-1200x675 \
--high-dpi \
--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 \
--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" \
--output-framerate 30 \
--output-ppm-stream - \
| ffmpeg -y -r 30 -f image2pipe -vcodec ppm -i - -vcodec libx264 -preset ultrafast -crf 1 -threads 0 -bf 0 movie.mp4

```

3、潮流的视频是需要配上一个带感的背景音乐的，如 [sound.mp3](https://tw93.fun/files/audios/sound.mp3) 这样的，下载到项目根目录下，可以通过 avconv 将音频轨道加到视频上面，就达到上面效果了。

```bash
ffmpeg -i movie.mp4 -i sound.mp3 -map 0 -map 1:a -c:v copy -shortest -vcodec libx264 -crf 24 output.mp4
```

4、只要是 git 管理，所以不仅仅是开源项目，因为纯本地运行，你的工作代码也是支持的，可以试试。
