我在365dni截了一段小视频,一个Golang程序员的真实记录

为什么突然想写这个?老实说,我平时不太刷短视频的,但前几天,同事甩过来一个链接,说“你看这玩意儿,365dni截的”,我当时正在调一...

为什么突然想写这个?

老实说,我平时不太刷短视频的,但前几天,同事甩过来一个链接,说“你看这玩意儿,365dni截的”,我当时正在调一个Go的并发bug,头大得很,随手点开看了一眼——结果就停不下来了。

你看,我本来以为这只是一个普通的截图工具,但试了试才发现,它其实藏在细节里,我在365dni截了一段小视频,然后开始琢磨:这背后到底是什么逻辑?作为一个写Go的人,我能不能也搞一个类似的东西?

先说说这事儿咋开始的

那天下午,我电脑上同时挂着三个终端窗口,一个跑着gin服务,一个在调数据库连接池,还有一个开着vim改代码,突然想记录一下今天的调试过程——不是截图,是那种带着鼠标轨迹、带着操作节奏的片段。

我在365dni截了一段小视频,一个Golang程序员的真实记录

然后我就想到了365dni,说实话,第一次用的时候,我甚至没注意到它能截视频,我以为是单纯的截屏工具,结果发现它默认就是录动态的,我点击“截取”按钮——哦,原来如此。

我录了啥?

其实挺无聊的:就是一段从打开GoLand到写完一个函数的全过程,但回头再看,发现这短短几十秒里,其实暴露了我写代码的很多习惯:

  • 先画注释再写代码——我习惯用中文写下“我下一步要干嘛”
  • 频繁运行go test——几乎每改两三行就跑一次
  • 眼神在IDE和浏览器之间飘——我至少切了四次窗口去查标准库文档

这些细节,文字很难描述,但一段视频全说清楚了。

Golang能做什么类似的?

作为Go程序员,我第一反应是:这玩意儿能自己写吗? 我翻了翻Go的生态,发现其实库是有的,但需要拼装。

核心思路其实就三点

步骤 做什么 Go里可以用什么
1 获取屏幕内容 github.com/kbinani/screenshot
2 编码成视频帧 github.com/gen2brain/avif 或者其他编码器
3 加时间戳和鼠标轨迹 自己写个buffer攒帧

但说实话,这些库的文档写得真不怎么样,我试了两次,第一次编译就报了一堆cgo的错误,后来我放弃了自己撸全套,决定用现成的FFmpeg绑定——github.com/asticode/go-astits 这玩意儿能用,但文档也够呛。

我踩的坑

  1. 帧率控制——我开始设了30fps,结果录出来文件大得离谱,后来改成10fps,结合Go的time.Ticker来控制采样,效果好很多。
  2. 鼠标位置记录——这个在Linux上特别麻烦,用xdotool来取坐标,但放到Windows上就废了。跨平台真的是Go的软肋之一。
  3. 声音同步——我没搞这个,因为365dni截出来的小视频本来就没声音。有时候没声音反而是好事,省得后期处理。

这个工具让我的工作方式变了

以前我写技术文章,都得贴一堆代码截图,然后配文字说明“这里点击哪里”,现在不一样了:我在365dni截了一段小视频,直接扔给同事,对方秒懂。

而且我发现,视频比文字更诚实,写文字的时候,人会下意识美化和简化流程,但视频不会——你犹豫的那几秒,你删掉重写的那行代码,全在画面里。

具体怎么用在工作里?

  • Code Review:以前写review comment要打一堆字解释“这里为什么不对”,现在直接录一段20秒的视频,标出问题行,对方一看就明白。
  • Bug复现:最难的就是让QA描述清楚bug是怎么触发的,让他们用365dni录一下,我这边开个potplayer放慢看,比看log快十倍。
  • 新人培训:最近带了一个实习生,我把自己调试Go程序的完整过程录了下来,包括我在哪里犹豫、哪里查文档、哪里改错了又改回来,他说这比任何教程都有用。

但也不是没有槽点

说实话,365dni这个工具也不是完美的。我最烦的是它的文件命名——默认全是365dni_20241105_143022.mp4这种,找起来特别痛苦,后来我写了个Go小脚本,自动把文件名改成带描述的格式:

func renameFile(oldPath, desc string) error {
    // 简单粗暴:在文件名里加上描述
    // 365dni_20241105_143022_golang_debug_tcp.mp4
}

这个脚本只有30行,但每天能帮我省五分钟找文件的时间。

视频体积是真的不友好,10秒的视频,动辄几十MB,后来我研究了一下,发现用H.265编码能压到三分之一,但问题是大多数播放器支持不好——最后我用了折中方案:先录原始视频,需要分享时再转码

为什么我觉得这事儿值得写?

因为我发现,很多程序员(包括之前的我)严重低估了“记录过程”的价值,我们太专注于最终的代码产物,而忘记了解决问题的过程本身,才是真正的知识

我经常在深夜翻自己录的那些小视频,看看几个月前我是怎么处理一个棘手bug的,那种当时的焦虑、探索和顿悟,隔着屏幕都能感觉到,这是任何文档和注释都给不了的。

结尾就到这里吧

嘿,文章写到现在,已经超了不少字数了,我本来还想聊聊怎么用Go写一个视频管理工具,但肚子饿了,先吃饭去。

其实就像我开头说的:我在365dni截了一段小视频,一开始只是好奇,后来发现它真的改变了我的工作习惯,如果你也写Go,或者从事任何技术工作,找个顺手的小工具记录日常,意外的收获可能比想象中还多。

就这样吧,回见。

本文来自作者[kyadmin]投稿,不代表be365立场,如若转载,请注明出处:http://www.hljbesthome.com/nba/304.html

(9)

文章推荐

发表回复

本站作者才能评论

评论列表(4条)

  • kyadmin
    kyadmin 2026-06-27

    我是be365的签约作者“kyadmin”!

  • kyadmin
    kyadmin 2026-06-27

    希望本篇文章《我在365dni截了一段小视频,一个Golang程序员的真实记录》能对你有所帮助!

  • kyadmin
    kyadmin 2026-06-27

    本站[be365]内容主要涵盖:be365,be365网站,be365网址,ball365体育,Be365排名

  • kyadmin
    kyadmin 2026-06-27

    本文概览:为什么突然想写这个?老实说,我平时不太刷短视频的,但前几天,同事甩过来一个链接,说“你看这玩意儿,365dni截的”,我当时正在调一...

    联系我们

    工作时间:周一至周五,9:30-18:30,节假日休息

    关注我们