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%
小于录制会话持续时间),这就是为什么在音视频同步中出现随时间延迟增长的原因。
问题:这个计算和结论是否正确?
处理缓冲区回调的代码尽快执行很重要。如果它在慢速计算机上做太多工作或 运行,则可能会丢弃一些缓冲区。
简介
我正在为舞蹈比赛创建一个 多通道 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%
小于录制会话持续时间),这就是为什么在音视频同步中出现随时间延迟增长的原因。
问题:这个计算和结论是否正确?
处理缓冲区回调的代码尽快执行很重要。如果它在慢速计算机上做太多工作或 运行,则可能会丢弃一些缓冲区。