客户有 300 小时的课程录像,要加章节标记。人工看要两周,我用 ffmpeg 的场景检测加一层自己写的过滤,半天出结果,人工只做校验。这篇写完整的做法:ffmpeg 的 scene 检测怎么用、为什么它经常不准、自己实现检测的代码,以及怎么把场景变成真正的章节和精彩片段。
阅读全文
技术博客
分享开发技巧、工具使用教程与行业动态
一条 migration 在生产跑了 8 分钟,期间整表被锁,全站写入阻塞,用户看到一片 502。事后我才搞明白:加字段、加索引、加非空约束这三件事的锁行为完全不同。这篇写 PostgreSQL 的锁对照表、加索引必须 CONCURRENTLY 的原因、NOT VALID 约束的技巧,以及我们现在的迁移检查清单。
阅读全文
客户要把横屏素材剪成竖版短视频,直接中间裁切的结果是:主讲人经常跑到画面外。我做了个主体检测 + 平滑跟踪的裁切方案,把"主体在画面内"的比例从 61% 提到 94%。这篇写完整实现:检测用什么、裁切窗口怎么平滑、ffmpeg 怎么落地,以及横转竖绕不开的分辨率损失问题。
阅读全文
客户给了份 Premiere 导出的时间线,要我们按剪辑点自动切出 40 个片段。拿到手是个 XML,里面的时间码我一开始读错了——因为没搞清楚丢帧时间码,切出来的片段每个都差几秒。这篇写清楚时间线交换格式的门道:EDL/XML/FCPXML 各是什么、丢帧时间码的坑,以及用 OpenTimelineIO 做通用解析的实战。
阅读全文
一次批量任务跑到一半全崩,报错全是 No space left on device,但 df 显示还剩 20G。后来才知道"磁盘满"至少有四种完全不同的病因。这篇把排查工具、大文件写入的预分配与稀疏文件陷阱、inode 耗尽,以及我们现在的磁盘策略都写下来。
阅读全文
一批课程屏录按常规参数压完,PPT 上的小字糊得看不清。我加码率、降 CRF,效果都有限——因为问题根本不在码率,而在 4:2:0 色度采样和编码器的心理视觉优化。这篇写屏录内容的特殊性、为什么通用参数会毁掉文字,以及一套实测有效的参数模板。
阅读全文
有个视频能播,但转码后时长变短、帧率不对、颜色发灰。ffprobe 看的元数据一切正常。最后我把裸码流导出来逐层看,才发现问题全在 SPS 里——帧率没写、色彩信息缺失、GOP 是开放结构。这篇写码流层的诊断方法:NALU 怎么读、SPS 里藏着什么、GOP 怎么分析。
阅读全文
接口被刷,一天几十万次请求,解析额度烧光。我第一版按 IP 限 60 次/分钟,结果把一个公司 NAT 后面的两百个用户全挡在门外。这篇写清楚限流的三个维度(速率、并发、配额)、四种算法、Django 和 nginx 两层的落地代码,以及最重要的——怎么不误伤正常用户。
阅读全文
客户要低延迟互动直播,我们选了 WebRTC。踩的坑都不在"调用 API"层面:NAT 穿透失败、多人要用 SFU 而不是 mesh、录制难做、以及"为什么延迟还是 3 秒"。这篇写完整的工程方案:拓扑怎么选、TURN 怎么部署、录制怎么做、延迟怎么优化。
阅读全文
客户投诉"我们的视频在电视上比别的节目声音小,广告一响又震耳朵"。这不是音量问题,是响度标准问题。这篇写清楚:峰值归一化为什么没用、LUFS 是什么、R128 和各平台的目标值、ffmpeg loudnorm 双遍的正确用法,以及一套批量测量与校验的脚本。
阅读全文