AudioWorkletProcessor.process运行时长过长影响问题咨询
AudioWorkletProcessor.process 超时执行影响解答
AudioWorkletProcessor.process运行在浏览器专属的高优先级实时音频渲染线程,调度节奏完全匹配音频硬件的缓冲区刷新周期,常规配置下每128个采样帧触发一次调用,48kHz采样率场景下调用间隔仅约2.7ms,本身是为微秒级的轻量计算设计的。
当该方法单次执行耗时过长(如超过1秒),会产生以下影响:
- 直接触发音频异常:音频硬件无法按时获取到下一段待播放的采样数据,会直接出现爆音、咔哒声、音频断流甚至完全静音的问题。
- 不会有采样排队,会直接丢帧:音频硬件的运行时钟独立于CPU调度,不存在缓存采样等待
process执行完成的机制。阻塞结束后,线程会直接跳到当前最新时间点对应的缓冲区继续处理,阻塞期间的输入采样会被直接丢弃,阻塞期间的输出空缺也不会回溯补全,相当于这1秒的音频数据直接被跳过。 - 极端情况下会导致音频上下文失效:部分浏览器内核检测到音频渲染线程长时间阻塞后,会直接终止当前
AudioContext实例,所有关联的音频处理逻辑都会停止运行,必须重新初始化AudioContext才能恢复。
内容的提问来源于stack exchange,提问作者Dilshod Tadjibaev
相关产品推荐
相关产品推荐

