openAL 获取/设置偏移量(以秒为单位)

发布于 2024-11-18 21:23:21 字数 366 浏览 1 评论 0原文

我使用 OpenAL 来播放背景音乐。在某一时刻,我需要获得轨道上的准确当前位置。我尝试使用 alGetSourcef(_source, AL_SEC_OFFSET, &offset); 并且它在 iOS 4 上完美运行,但在 iOS 3 上它返回一个 int (没有小数位)。这不够准确,因为我需要精确到至少 3 位小数(然后我使用此偏移信息跳转到轨道上的另一个点,向下舍入的值意味着它最终会跳转到不准确的位置)。

是否可以获取 AL_SAMPLE_OFFSETAL_BYTE_OFFSET,然后将该值转换为秒?

声音文件:16位PCM WAV,采样率为22050。

I use OpenAL to play background music. At one point, I need to get the exact current position on the track. I tried using alGetSourcef(_source, AL_SEC_OFFSET, &offset); and it works perfectly on iOS 4, but on iOS 3 it returns an int (no decimal places). This is not accurate enough, as I need accuracy to at least 3 decimal places (I then use this offset info to jump to another point on the track, and a rounded down value means it ends up jumping to an inaccurate position).

Would it be possible to get the AL_SAMPLE_OFFSET or AL_BYTE_OFFSET and then convert that value to seconds?

Sound file: 16bit PCM WAV with sample rate of 22050.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不乱于心 2024-11-25 21:23:21

如果采样率为每秒 22050 个样本,您只需将样本偏移量除以 22050 即可得到时间。

With a sample rate of 22050 samples per second, all you need to do is divide the sample offset by 22050 to get the time.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文