慢下来才能更快
– Marshall Liu

【置顶】2026
记录跟踪2026年要做的事情和正在做的事情。 目标 健康生活 体重减到60kg 探索可能 英语能力,熟练3篇演讲短文 独立开发,目标完成4个独立项目 –> 进度2/4 公众号输出,目标输出文章10篇 –> 进度12/10 ...
WebRTC 音频丢包恢复:NetEQ、Opus FEC、NACK 与 PLC 如何协作
视频丢一帧,画面可能短暂卡住;语音丢掉一个承载 20 ms 音频的包,则可能吞掉一个关键的辅音片段。接收端还必须按时向扬声器交付 PCM:原包即使最终到了,错过播放时刻也无法补回已经听到的声音。 所以讨论音频丢包恢复,先要问:缺失的音频在播放截止时间前,究竟还有没有机会拿到? 有机会,就争取拿到编码数据;没有机会,就生成一段连续的替代声音。本文以本地 WebRTC 源码提交 c8bca1867efcbc5f52adf58ad4463088ed257aa0(2026-10-22)为基线,说明这些选择如何落到 WebRTC 的音频链路中。 ...

WebRTC 音频设备管理:从双向数据流到跨平台实现
麦克风把声音变成 PCM,扬声器把 PCM 变回声音。对一个实时通话系统来说,这两句话之间还有很多事情:选择设备、协商格式、启动音频流、适应设备回调的节奏,以及在耳机拔出、来电中断后恢复工作。 WebRTC 把这些工作集中在 Audio Device Module,简称 ADM。理解它,最好先建立整体位置,再沿着音频数据走一遍,最后进入代码和平台实现。否则很容易把“设备缓冲”“网络抖动缓冲”和“回声消除”混成一件事。 本文以本地 webrtc_src 的提交 3dec7d05377fb690e84f503db865edde982ab2a5 为源码基线,提交日期为 2026-10-23。正文主要讨论使用内置设备模块的 native 音频路径;浏览器或业务方可以注入自己的 ADM,复用这里的接口而采用不同的数据通路。文中的源码链接固定到该提交,代码片段会标明是否经过简化。 ...
一名音频程序员的科技自媒体创业调研
我想尝试科技自媒体创业。这篇文章基于自己十多年音频算法和音视频开发经历,整理了账号定位、内容栏目、起步选题、制作流程和变现路径。
用 OpenSpec 重构 AI Coding 工作流:让每次开发都可追溯、可恢复、可沉淀
AI Coding 快了,但方案反复、决策丢失和上下文中断也变得更常见。这篇文章介绍如何用 OpenSpec 把 Explore、Propose、Review、Apply 和 Archive 串成一条可复用的规格驱动开发流程。