Stay Hungry, Stay Young. 👋

慢下来才能更快
– Marshall Liu

2026:向上生长,寻找变化。朝阳下,一条道路穿过绿色山丘,蜿蜒通往远方。

【置顶】2026

记录跟踪2026年要做的事情和正在做的事情。 目标 健康生活 体重减到60kg 探索可能 英语能力,熟练3篇演讲短文 独立开发,目标完成4个独立项目 –> 进度2/4 公众号输出,目标输出文章10篇 –> 进度12/10 ...

二月 22, 2026 · 1 分钟 · 489 字 · Marshall Liu
WebRTC 音频丢包恢复:RTP 时间轴中的丢失音频包由后续包携带的冗余信息修复,波形经 NetEQ 保持连续

WebRTC 音频丢包恢复:NetEQ、Opus FEC、NACK 与 PLC 如何协作

视频丢一帧,画面可能短暂卡住;语音丢掉一个承载 20 ms 音频的包,则可能吞掉一个关键的辅音片段。接收端还必须按时向扬声器交付 PCM:原包即使最终到了,错过播放时刻也无法补回已经听到的声音。 所以讨论音频丢包恢复,先要问:缺失的音频在播放截止时间前,究竟还有没有机会拿到? 有机会,就争取拿到编码数据;没有机会,就生成一段连续的替代声音。本文以本地 WebRTC 源码提交 c8bca1867efcbc5f52adf58ad4463088ed257aa0(2026-10-22)为基线,说明这些选择如何落到 WebRTC 的音频链路中。 ...

十一月 5, 2026 · 9 分钟 · 4446 字 · Marshall Liu
WebRTC 音频设备管理:ADM 连接麦克风、扬声器和桌面及移动平台,橙色与蓝色波形分别表示采集和播放数据流

WebRTC 音频设备管理:从双向数据流到跨平台实现

麦克风把声音变成 PCM,扬声器把 PCM 变回声音。对一个实时通话系统来说,这两句话之间还有很多事情:选择设备、协商格式、启动音频流、适应设备回调的节奏,以及在耳机拔出、来电中断后恢复工作。 WebRTC 把这些工作集中在 Audio Device Module,简称 ADM。理解它,最好先建立整体位置,再沿着音频数据走一遍,最后进入代码和平台实现。否则很容易把“设备缓冲”“网络抖动缓冲”和“回声消除”混成一件事。 本文以本地 webrtc_src 的提交 3dec7d05377fb690e84f503db865edde982ab2a5 为源码基线,提交日期为 2026-10-23。正文主要讨论使用内置设备模块的 native 音频路径;浏览器或业务方可以注入自己的 ADM,复用这里的接口而采用不同的数据通路。文中的源码链接固定到该提交,代码片段会标明是否经过简化。 ...

十月 25, 2026 · 27 分钟 · 13249 字 · Marshall Liu
音频程序员在声音科技实验台前测试耳机、麦克风和音频波形,封面标题为程序员做科技自媒体

一名音频程序员的科技自媒体创业调研

我想尝试科技自媒体创业。这篇文章基于自己十多年音频算法和音视频开发经历,整理了账号定位、内容栏目、起步选题、制作流程和变现路径。

九月 29, 2026 · 8 分钟 · 3842 字 · Marshall Liu
OpenSpec 工程流封面:将模糊需求依次经过 Explore、Propose、Review、Apply 和 Archive,沉淀为可追溯、可恢复的项目规格

用 OpenSpec 重构 AI Coding 工作流:让每次开发都可追溯、可恢复、可沉淀

AI Coding 快了,但方案反复、决策丢失和上下文中断也变得更常见。这篇文章介绍如何用 OpenSpec 把 Explore、Propose、Review、Apply 和 Archive 串成一条可复用的规格驱动开发流程。

九月 28, 2026 · 11 分钟 · 5408 字 · Marshall Liu