一年365天小视频,我用Go语言把生活过成了连续剧
- 科技
- 2026-08-29 20:09:58
- 95
这周清理手机相册,发现一个有趣的现象:我居然存了三百多个小视频片段,几乎每天一条,有的是地铁口卖糯米饼的大爷颠锅时的慢动作,有的是凌晨写代码时屏幕闪烁的光影,还有的是楼下橘猫打哈欠的完整过程,看着这些零碎的片段,我冒出个念头——能不能用Go语言写个小工具,把这些365天的小视频管理起来,像拼拼图一样把生活串成线?
先说个老实话,视频处理这事在Go里曾经是个痛点,不像Python那样有OpenCV全家桶,但这两年情况变了,ffmpeg的Go绑定越来越成熟,gocv也支持了大部分基础操作,我打算分三步走:按日期自动归档、生成每日缩略图、最后合成年度回顾视频——全程用Go搞定。
第一步:让文件夹替我做时间管理
视频文件从手机导出时,名字往往乱得跟我的书桌似的:IMG_20250413_183022.mp4、20250413_183022.mp4、甚至还有VID_20250413_183022.mp4,我写了个小程序,用时间戳正则表达式把文件名里的年月日拎出来,然后自动建一个2025/04/13这样的目录树,贴上关键代码:
func extractDate(filename string) string {
re := regexp.MustCompile(`(\d{4})(\d{2})(\d{2})`)
match := re.FindStringSubmatch(filename)
if len(match) < 4 {
return "unknown_date"
}
return fmt.Sprintf("%s/%s/%s", match[1], match[2], match[3])
}
这函数不复杂,但胜在管用,我把所有视频丢进一个import文件夹,程序扫描一遍,目录就自动归整了,看着突然整齐的文件夹,心里舒坦——这大概就是程序员的收纳魔法。
第二步:缩略图墙,我的年度记忆相册
每天的小视频,如果光看文件名根本想不起内容,所以第二步,我用Go调ffmpeg给每个视频抽一帧关键画面,生成缩略图,缩略图按日期命名,拼成一个网格墙,这样一来,看着墙上密密麻麻的小图,哪天下雨、哪天和谁吃了火锅、哪天写代码写到凌晨——全都一目了然。
这一步其实用到一个有点冷门但极好用的包:github.com/asticode/go-astiav,它能直接调底层FFmpeg库,不用额外装命令行工具,我先把所有视频路径收集到一个slice里,然后并发地抽帧——得益于Go的goroutine,处理365个小视频也就十几秒的事。
var wg sync.WaitGroup
for _, path := range videoPaths {
wg.Add(1)
go func(videoPath string) {
defer wg.Done()
generateThumbnail(videoPath, 2.0) // 取第2秒的画面
}(path)
}
wg.Wait()
第三步:用蒙太奇把365天拼成一个故事
最激动人心的是第三步,我用Go的ffmpeg绑定把所有小视频按日期顺序拼接起来,每段截成3秒,两两之间加个渐隐的转场效果,合成出来的视频,如果跳着看,会发现时间在飞速流逝——有时是春天窗外抽芽的树,转眼变成夏天汗湿的T恤,然后又跳到冬天哈出的白气。
合成时我用了个技巧:根据视频拍摄时间自动调整亮度和色温,白天的视频加暖滤镜,晚上的降亮度,这样一来整个视频的视觉节奏就像一天中的自然光线变化,看起来特别丝滑。
其实在这过程中我还有个意外收获:用Go的image包可以生成简单的文字卡片,我在每个小视频片段前插入一张黑色底、白色字的卡片,写上日期和当时的一个短句(3月17日,学会做红烧肉”),这样每年的回顾视频就不只是画面的堆叠,更像一本会动的日记。
为什么Go语言是干这个的“隐形王者”
你可能觉得Python更顺手,但我想说几点Go的实打实优势:
- 交叉编译是真的香,我在电脑上写代码,随手
GOOS=linux GOARCH=arm64 go build就能把程序丢到NAS上跑,不用装环境。 - 并发处理视频不卡,当年用Python脚本处理几十个视频时,真能等到怀疑人生,换成Go的goroutine+channel,进度条一路狂飙。
- 部署就是一坨二进制,有次我把这个工具发给同事,他就下载一个exe,双击完事,哪像Python还得配pip环境。
Go在处理复杂视频特效时还是不如专业剪辑软件灵活,像音画同步、自动踩点这种操作,我最后还是得把合成视频丢到剪映里微调,但打个底子、批量整理这种粗活脏活,Go真的比手撸脚本省心太多。
从365天小视频里看到的东西
干了这事最大的感悟是——原来我每天都在拍视频,虽然当时觉得就是随手一按,但连起来看,就能看见生活的纹理,一月份那些团在沙发上看书的夜晚,四月份在阳台种薄荷的下午,九月份回老家陪爸妈吃饭的桌边……都在那些几秒钟的片段里。
前几天家里人问我“你这一年都忙啥呢”,我没直接回答,把我们那口子用这工具生成的年度视频投到电视上,三分钟,看完谁都没说话——原来时间有形状,就是小视频那个方方正正的4:3。
