加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

.net – Windows播放音频的准确度(就时间而言)?

发布时间:2020-12-14 02:21:46 所属栏目:Windows 来源:网络整理
导读:假设我播放一个317,520,000个样本的立体声WAV文件,理论上是1小时.假设播放没有中断,文件是否会在一个小时内完成播放,或者播放速度是否会偶尔出现微小的变??化,使得它比一小时稍微多一点(略微毫秒)? 我正在尝试将动画与音频同步,我正在使用System.Diagnostic
假设我播放一个317,520,000个样本的立体声WAV文件,理论上是1小时.假设播放没有中断,文件是否会在一个小时内完成播放,或者播放速度是否会偶尔出现微小的变??化,使得它比一小时稍微多一点(略微毫秒)?

我正在尝试将动画与音频同步,我正在使用System.Diagnostics.Stopwatch来保持帧与音频匹配.但是,如果Windows中WAV音频的播放速度随时间略有不同,则音频将与秒表驱动的动画不同步.

这导致了第二个问题:看起来秒表 – 虽然在短时间内非常精细和准确 – 运行速度稍快.在我的笔记本电脑上,秒表运行24小时(通过计算机的系统时间和真正的秒表测量)显示24小时的经过时间加上大约5秒(不是毫秒).

这是秒表的已知问题吗? (一个相关的问题是“我疯了吗?”,但你可以自己尝试一下.)鉴于它作为诊断工具的用途,我可以看到这样的差异只会在测量长持续时间时出现,其中大多数人们会使用秒表以外的东西.

如果我真的很幸运,那么秒表和音频播放都是由相同的底层机制驱动的,因此可以在几天内保持同步.这是真的吗?

更新:我刚刚做了数学计算,如果秒表在24小时内漂移了5秒,这意味着它会在172秒后漂移10毫秒.因此,在3分钟内,动画将开始明显不同步.

我正在周期性地(大约每10秒左右)尝试从waveOutWrite回调中重新启动计时器,但这不起作用,因为随后回调的不准确性将导致整个下一组计时器事件被抵消. .很难成为我.

解决方法

没有时钟会“精确”地测量时间,因为所有物理设备都必然会有一些变化和测量误差.这意味着所有时钟都会略微过快或过慢(尽管误差量可能会有很大差异,具体取决于时钟).

在您的情况下,音频输出由驱动DAC的声卡上的时钟驱动.我不知道.NET平台,但我认为秒表是某种系统计时器,这意味着它是由一个不同的时钟(主板上的那个)推动的.

现在一般情况下,由于上述原因,两个不同的物理时钟永远不会以完全相同的速度运行.这就是你得到的差异来自哪里.你的动画也会发生同样的事情 – 绝对不能假设系统时钟和声卡DAC时钟是相同的 – 它们会有所不同!

这意味着如果要保持两个流(视频和音频)同步,它们必须由相同的时钟驱动.由于您无法更改驱动声卡的时钟,因此将所有内容同步到声卡是一个不错的选择.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读