当前位置:首页 > 旅游 > 正文

用Go语言写一部365天的视频日记,从零开始的费曼式记录

  • 旅游
  • 2026-07-12 06:47:53
  • 332
摘要: h1: 一年365天,天天拍视频,这到底能成吗?老实说,去年有一天我刷到一个博主,他说自己用手机拍了整整一年,每天一分钟,最后剪...

h1: 一年365天,天天拍视频,这到底能成吗?

老实说,去年有一天我刷到一个博主,他说自己用手机拍了整整一年,每天一分钟,最后剪成了个4小时的“人生电影”,我当时第一反应是:这人疯了吧? 但紧接着,我又想看看自己能不能也试试,我是码农,平时写Go语言写的多,拍视频?那玩意儿跟我八竿子打不着,可转念一想,费曼说过:“如果你不能简单地解释它,说明你还没真正理解它。”——那如果我用拍视频的方式,把自己每天学到的东西、干过的事情都“解释”一遍,是不是也算一种学习?于是乎,我决定:用Go语言写一个小工具,辅助我完成这365天的视频日记,不是让你拍得多好,而是让你拍得住、拍得完


h2: 为什么非得用Go?Python它不香吗?

你可能想问:拍视频这事儿跟Go有半毛钱关系?别急,我给你捋一捋,我一开始试过用Python写视频管理脚本,但Python那套依赖库装来装去,换台电脑就崩,而且我想每天拍完视频,马上能自动重命名、打标签、算时长,甚至生成个简单的日志文件,如果每次都要开个Jupyter Notebook,那不是给自己找事吗?

Go就俩优点,但正好致命:

  1. 编译成单文件——扔哪都能跑,不需要装Python环境,你爸妈电脑上都能双击运行。
  2. 并发简单——我经常拍完视频,后台自动转码、压缩、上传备份,一气呵成,用Go的goroutine,几行代码就能搞定。

你想想,一年365天,每天拍一段,最怕的是什么?是坚持不下去,而坚持不下去的最大原因,往往是“流程太复杂”或者“工具不好使”,所以我用Go写了个命令行小工具,每天跑一次,帮我管理视频文件。工具越简单,你越可能坚持。


h2: 我那小工具到底长啥样?

先给你看个核心逻辑,别怕,这不难。

package main
import (
    "fmt"
    "os"
    "time"
)
func main() {
    today := time.Now().Format("2006-01-02")
    videoFile := fmt.Sprintf("./videos/%s.mp4", today)
    // 检查今天是否已经拍了视频
    if _, err := os.Stat(videoFile); os.IsNotExist(err) {
        fmt.Println("今天还没拍,赶紧去拍吧!")
        // 这里可以调用手机或者相机的API(假设有)
    } else {
        fmt.Println("今天已经拍过啦,整理一下标签?")
        // 读取视频信息,记录到日志里
    }
}

这段代码很糙,但对得起它的功能——每天早上起来,先跑一下这个程序,如果发现今天还没拍视频,它就提醒我,而如果拍过了,它就会自动把我前一天拍的视频,按照日期存好,并且在日志文件里记上一笔。

你还别笑,就是这么个小东西,帮我坚持了整整300多天(我现在还在拍,今天是第327天)。人不是铁打的,但程序是,程序每天会给你同一个提醒,就像打卡一样,而Go的编译速度飞快,每次改完代码,几毫秒就能重新生成exe文件,跑起来,完事。


h3: 拍什么内容才不无聊?用“费曼法”拆解

说真的,刚开始头两周我天天拍早餐、拍上班路、拍键盘敲代码,自己看两遍就删了。太无聊,后来我换了个思路:每天找一件“我能教别人”的小事。

具体做法是这样:

  • 周一:讲一段Go语言里的一个坑(比如slice的底层原理),对着镜头,假装同事在问我。
  • 周二:拍我跑步时听的一本书,复述作者最核心的观点(逼着自己费曼式输出)。
  • 周三:拍我做的一道菜,重点讲失败的地方——比如为什么红烧肉炒糖色总是苦。
  • 周四:拍我写代码时,边写边骂的那种(真实感爆棚)。
  • 周五:拍周末计划,立flag。
  • 周六/日:回顾这一周拍的片段,用Go写个脚本自动拼接成周记。

你会发现,一旦你想着“我要把这事讲清楚给别人听”,你的注意力和思考深度完全不一样。费曼法本质上不是学习技巧,它是一种思维习惯,而拍视频,就是把这个习惯具象化。


h2: 实际运营中的三个“坑”和Go的救场

一路拍下来,肯定不是一帆风顺,我遇到过几个大坑:

表现 怎么用Go解决的
视频文件太多,找起来想死 拍了一百多天,文件夹里一堆“20231101.mp4”、“20231102.mp4”,不知道里面讲的啥 写了个Go脚本,每天拍完后自动在文件名里加个“标签”字段。20231101-费曼讲slice.mp4,因为Go处理字符串和文件I/O极其快,批量重命名瞬间完成
手机内存不够 拍完舍不得删,但手机动不动提示存储空间不足 用Go写了一个“自动转码并备份到硬盘”的小服务,每天凌晨,检测新视频,转成H.265格式(体积缩小一半),然后存到移动硬盘里。整个过程用goroutine并发做,不耽误白天拍新的
动力断档,连续几天不想拍 最怕的就是这个,一旦停了三天,基本就停了 写了个“士气检测器”——每天如果连续拍了7天,Go程序会发一条推送:“祝贺你,挺过了第一个七天!”如果有一天漏了,它会邮件提醒:“别放弃,明天补上!”

表格里这些功能,听起来复杂,其实用Go标准库加两三行代码就能实现,你不是要成为Go高手,你只是用Go解决一个“坚持拍视频”的具体问题。


h2: 真正的价值在哪?不是视频本身,是“天天”两个字

你可能会想:拍完这365天,我就有一条超长的视频了,但说实话,最后生成的视频,大概率你不会看第二遍,真正值钱的东西,藏在那365个拍摄的瞬间里:

  • 你记录了某天你因为一个bug焦头烂额的样子——三个月后回头看,那bug简直是个笑话。
  • 你记录了自己第一次跑马拉松那天的气喘吁吁——现在看着,鼻子会酸。
  • 你记录了和女朋友吵架后,一个人坐在公园长椅上的沉默——现在你们已经结婚了,那段视频成了你们的“警钟”。

这些场面,靠大脑是记不住的。大脑擅长的是“概括记忆”,而视频做的是“情景还原”,更妙的是,因为每天拍,你会不自觉地观察生活:今天有什么值得记的?我学到了什么?这种觉察本身就是一种成长。

我用Go写的那个小工具,现在每天早上一睁眼就提醒我:“该拍了。”它很安静,不啰嗦,就像个老朋友,而我就算出差,也会在酒店里拍十几秒;就算病得躺在床上,也会拍个天花板说一句“今天休息”。

一年365天,天天拍视频,这件事听着像“行为艺术”,但做完之后,你会发现:你不是在拍视频,你是在用每天一分钟,给自己写一本活着的说明书,而能让这本说明书持续写下去的关键,不是意志力,不是摄像机,甚至不是Go语言——是你愿意为了“记录”这件事,把流程简单到不能再简单

好了,我得去拍今天的视频了,目前是第327天,还有38天满一整年,你呢?要不要也试试,从今天开始?

用Go语言写一部365天的视频日记,从零开始的费曼式记录