小编Bra*_*sch的帖子

如何将音频流式传输到 OpenAL Sources 中?

我刚刚开始使用 OpenAL。

我已成功将 WAV 文件加载到其中,并成功播放它们。这很容易。

现在,我需要能够将音乐流式传输到 OpenAL 中,而不是将整个文件加载到其中。虽然这对于声音效果等有好处,但正如您可能知道的那样,对于音乐来说可能非常危险。

问题是,我似乎无法在谷歌上找到与此相关的任何内容。虽然我找到了一些与流 OGG 文件相关的示例,但我更愿意制作一个支持所有音乐文件的系统。

据我了解,OpenAL 应该为此内置函数。但我找不到他们。

所以,我的问题是,如何将音频流式传输到 OpenAL 的缓冲区中,同时删除已播放的部分并导入尚未播放的部分?

如果这是一个无知的问题,我深表歉意。

java audio openal stream lwjgl

5
推荐指数
1
解决办法
3072
查看次数

OpenAL监听器打破衰减

为了一切的热爱,我已经呆了三个小时。

当我移动监听器时,OpenAL完全打破了衰减。我不知道为什么。

如果我不更改侦听器设置,则可以正常工作。但不幸的是,这不是3D游戏中可行的解决方案。

我已经尝试了所有方法,从标准化所有发声组件的位置和速度,到手动设置所有衰减设置。但是,毫无疑问地更改监听器上的任何设置总是会破坏衰减。如果我移动收听者,我会听到距离我100个单位的声音,好像它的位置没有作用。

我什至使用过alGet参数来检查并查看值是否正确通过。他们是。

游戏中的每个单位为1x1,因此在许多情况下,两个实体之间的距离约为100个单位。

    alListener3f(AL_POSITION, pos.x, pos.y, pos.z);
    alListener3f(AL_VELOCITY, vel.x, vel.y, vel.z);
    alListener(AL_ORIENTATION, system.listener.getOrientationBuffer());
    alListenerf(AL_GAIN, system.listener.getMasterGain());
Run Code Online (Sandbox Code Playgroud)

这就是负责更改侦听器的所有代码。根据指示,主增益为0.5f,声音本身也为0.5f。距离模型为AL_LINEAR_DISTANCE_CLAMPED,参考距离为1f,最大距离为2f。衰减仍然不起作用,并且放置也没有区别。在LINEAR_DISTANCE_CLAMPED模式下,无论如何,距离都​​不起作用。如果我将其保留为默认模型,则当我不移动侦听器时,它将不起作用。

方向已保留为默认值 (0, 0, -1f, 0, 1f, 0f)

不,我的声音驱动程序很好,这台计算机是在不到一个月前用最新部件制造的。

是的,声音采用单声道格式。

有人请帮助我。

audio openal lwjgl listener

4
推荐指数
1
解决办法
1369
查看次数

Java 时间:LocalTime (UTC) 到 ZonedTime (-05:00) 未显示正确的小时

我刚开始使用 Java 的内置时间 API。我正在尝试获取 UTC 中的当前时间,并且希望能够将其转换为运行该程序的人的时区。现在我有这个代码:

Clock clock = Clock.systemUTC();
LocalDateTime time = LocalDateTime.now(clock);
ZonedDateTime zonedTime = time.atZone(ZoneId.systemDefault());
System.out.println("UTC time: " + time + " Local: " + zonedTime);
Run Code Online (Sandbox Code Playgroud)

但是,这会打印出:

UTC time: 2022-06-01T15:25:57.933673600 Local: 2022-06-01T15:25:57.9336736-05:00
Run Code Online (Sandbox Code Playgroud)

它似乎正在获取正确的时区,但没有将其应用于输出。所以如果我打印

time.getHour()
zonedTime.getHour()
Run Code Online (Sandbox Code Playgroud)

他们都打印出“15”。让它给我应用时区偏移的时间的正确方法是什么?UTC 时间是 15,但我的本地时间是 10。我希望能够将 UTC 转换为时区时间。

原因是我正在设置保存文件 - 所以我想记录保存文件时的 UTC 时间,但随后能够在用户检查其保存日期时显示用户所在时区的时间电脑。

java time

2
推荐指数
1
解决办法
523
查看次数

标签 统计

audio ×2

java ×2

lwjgl ×2

openal ×2

listener ×1

stream ×1

time ×1