ASIO:缓冲区丢失

ASIO: Buffer Loss

简介

我正在为舞蹈比赛创建一个 多通道 ASIO 音频和视频 录音机。视频和音频流必须完全同步。主要障碍是我无法访问真实设备 (Steinberg UR44),所以我使用 ASIO4ALL,而我的设备客户端只是向我发送日志。

问题

在我的机器上使用 ASIO4ALL 我有理想的同步,但客户端与设备的延迟随着时间的推移而增加。所以这是我检测到缓冲区丢失的方式:日志显示 2482 调用 AsioOut.AudioAvailable 事件处理程序;录制会话持续时间为 35.133 秒;缓冲区大小:512;格式:16 bit PCM, 44kHz, 1 channel.

因此:理论上会发生 35.133 x 44100 / 512 = 3026 个呼叫,但客户只有 2482 个,因此他丢失了 ~20% 个音频数据。这就是为什么输出音频文件只有 28.003 秒的持续时间(~20% 小于录制会话持续时间),这就是为什么在音视频同步中出现随时间延迟增长的原因。

问题:这个计算和结论是否正确?

处理缓冲区回调的代码尽快执行很重要。如果它在慢速计算机上做太多工作或 运行,则可能会丢弃一些缓冲区。