0

介绍

我正在为舞蹈比赛创建一个多通道 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%小于录制会话持续时间),这就是为什么在音频-视频同步中出现随时间延迟增长的原因。

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

4

1 回答 1

1

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

于 2016-04-11T06:44:24.757 回答