一个系列有 40 集,每集开头都是同一段 90 秒片头。想自动标记"跳过片头"的时间点,文件级哈希完全没用(每集文件都不一样)。我用帧级感知哈希做时间轴序列匹配解决了,还顺带查出了一批"混进去的重复片段"。这篇写完整实现:dHash、序列对齐、加速索引,以及为什么最后还是加了音频指纹。
阅读全文
技术博客
分享开发技巧、工具使用教程与行业动态
筛选「技术博客」共 122 篇文章
查看全部
站内搜索用的是 LIKE '%关键词%',搜"ffmpeg 编译"搜不到,而且全表扫描越来越慢。考虑过 Elasticsearch,但对两百篇文章来说太重了。最后用 PostgreSQL 的 tsvector + GIN 索引 + 分词兜底方案解决,延迟从 800ms 降到 12ms。这篇写完整的方案,包括云数据库装不了扩展时怎么办。
阅读全文
客户要在视频里给一个移动的车牌打码、给产品加标注箭头。手动逐帧 K 帧不现实,我用 OpenCV 跟踪 + ffmpeg 合成做了自动方案。这篇写跟踪算法怎么选(CSRT / KCF / 光流)、轨迹怎么平滑和修正、ffmpeg 里怎么让 overlay 位置随时间变化,以及跟踪失败时怎么办。
阅读全文
客户要母版,我给了 CRF 18 的高码率 H.264 MP4,对方说"这不是母版"。后来才搞明白母版用的是中间编码(ProRes、DNxHR),特点是全帧内、便于二次剪辑。这篇写三类编码的分工、ProRes/DNxHR/FFV1 的参数与 ffmpeg 支持、体积成本,以及什么时候根本不需要母版。
阅读全文
用户下载一个 2GB 的文件,Django 视图被占住四十分钟,几个并发就把整站拖垮。后来换成 nginx 的 X-Accel-Redirect,同样的请求内存从 800MB 降到 20MB。这篇把完整配置、鉴权怎么保住、断点续传和限速怎么写,以及我踩的坑都记下来。
阅读全文
同码率下,把码率从背景挪到人脸和文字上,主观质量能明显提升。但真要在 ffmpeg 命令行里做空间 ROI,会发现支持很有限。这篇写清楚:x264/x265 的 zones 能做到什么程度、ROI 在哪个层面才能真正生效,以及我用"背景预处理 + zones"这套组合达到的效果。
阅读全文
客户有 300 小时的课程录像,要加章节标记。人工看要两周,我用 ffmpeg 的场景检测加一层自己写的过滤,半天出结果,人工只做校验。这篇写完整的做法:ffmpeg 的 scene 检测怎么用、为什么它经常不准、自己实现检测的代码,以及怎么把场景变成真正的章节和精彩片段。
阅读全文
一条 migration 在生产跑了 8 分钟,期间整表被锁,全站写入阻塞,用户看到一片 502。事后我才搞明白:加字段、加索引、加非空约束这三件事的锁行为完全不同。这篇写 PostgreSQL 的锁对照表、加索引必须 CONCURRENTLY 的原因、NOT VALID 约束的技巧,以及我们现在的迁移检查清单。
阅读全文
客户要把横屏素材剪成竖版短视频,直接中间裁切的结果是:主讲人经常跑到画面外。我做了个主体检测 + 平滑跟踪的裁切方案,把"主体在画面内"的比例从 61% 提到 94%。这篇写完整实现:检测用什么、裁切窗口怎么平滑、ffmpeg 怎么落地,以及横转竖绕不开的分辨率损失问题。
阅读全文
客户给了份 Premiere 导出的时间线,要我们按剪辑点自动切出 40 个片段。拿到手是个 XML,里面的时间码我一开始读错了——因为没搞清楚丢帧时间码,切出来的片段每个都差几秒。这篇写清楚时间线交换格式的门道:EDL/XML/FCPXML 各是什么、丢帧时间码的坑,以及用 OpenTimelineIO 做通用解析的实战。
阅读全文