【问题标题】:ASIO: Buffer LossASIO:缓冲损失
【发布时间】:2016-04-09 09:42:34
【问题描述】:

简介

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

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

【问题讨论】:

    标签: c# audio naudio asio


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多