gpt4 book ai didi

java - Libgdx声音效果仅在Android上无法流畅或完全播放(声音上的滞后效果)

转载 作者:太空狗 更新时间:2023-10-29 16:34:27 25 4
gpt4 key购买 nike

我使用libgdx + java开发了一款不错的游戏,以android为目标平台。
我快结束了,剩下的任务就是改善 map 。
到目前为止,我一直在运行-在台式机上调试游戏,因为您知道libgdx是跨平台的,并且我的期望是右键单击并导出到android。
当然我尝试了,那又如何呢?突然我撞到了墙。
问题是我的声音效果在android上听起来不太好。它们在桌面上效果很好,但在android上效果不好。让我通过几个问题和示例来分析此案例:
如果我们考虑爆炸声效果:
情景车辆撞到爆炸物,我从box2d捕获了接触,并调用播放方法以产生爆炸音效。
我期望的是正常的爆炸声。
在桌面上我听到了,没问题,但是在android中,我听到的只是一个非常短的嘈杂声(真的很短,也许是几毫秒),然后过了一会儿又是很长的沉默
我尝试了什么:

我尝试了来自其他多个线程的建议:

  • 我以44.1k hz 16位wav文件相同的格式尝试过它,ogg文件22.05 k hz wav文件都听起来相同。
  • 的音效不会太短或太长。好的,这是我的3秒。
  • 我试图用fl-studio和audacity重新保存或安排它。

  • 我在s5 mini experia z1和z3上都尝试过它们。

    当我使用音乐课时,mp3文件效果很好
    但是我有很多声音效果,音乐课不适合这种用法,所以我需要解决这个问题

    我在相同条件下尝试了一些其他声音文件,这些声音文件与爆炸声效果不同(我的意思是声音格式的频率或比特率等。)。

    我检查声音是否完全加载。是的,它已完全加载,但听起来是一样的,当然我会在游戏开始后玩它。我用这句话的意思是我至少要等到下一帧播放声音,因为有些人说它不能在某个线程的第一帧播放。

    如果我们想看一些代码:
    我如何加载文件:

    当用户耐心地关注加载屏幕上的进度条时,当游戏刚刚开始时调用此方法:)
    private void loadSoundEffects(){
    assetMan.load("sounds/explosion.wav", Sound.class);
    }

    然后在加载完成后,通过另一种方法将声音放入全局排序的映射中
       soundEffects.put("explosion",assetMan.get("sounds/explosion.wav", Sound.class));

    在我的声音管理器类(class)中,我有这样一种方法
    public void playSingle(String name,float x ,float y){
    Sound sound=null;
    sound=soundEffects.get(name);
    long id=sound.play();
    sound.setVolume(id, getVolume(x, y));//dont worry here volume returns always 1 for texting
    }

    当我在这里调用play方法时,它返回一个正ID(如果出现问题,它将返回-1)

    为了加载东西,我也尝试过这种方式:
    sound=Gdx.audio.newSound(Gdx.files.internal("sounds/explosion.wav"));

    这是一个很大的项目,所以我可能有70多个类=>我不能将所有这些都粘贴在这里:)
    但是我随时准备回答任何形式的问题,方式,地点,原因,问题。
    如果您需要更多代码或文件或其他东西,请告诉我

    让我们看看它的声音;我上传了普通的爆炸wav文件,并在这个rar中通过电话记录了该文件:

    http://www.filedropper.com/soundeffects

    您会听到一些类似滴答滴答的声音,实际上听起来像是:)

    编辑:添加一些更多的信息

    它在Windows 7上运行我的操作系统是win 7

    我正在使用最新的libGDX。我的IDE eclipse 。我尝试通过拔下电缆来摆脱调试器,但结果是相同的。

    声音效果使用文件的大小必须小于1 mb(如Wiki所述),我的文件为688 KB

    编辑:与性能有关?

    我开始考虑它是否与我的代码性能有关。考虑引起滞后的其他原因,并且对声音产生这种影响,但这是一些值,游戏速度为55-60 fps,甚至有些时候所有计算的时间少于15毫秒,但我听到的声音相同,文件很少大约60 KB。因此,我将继续考虑文件。如果它们坏了?还是格式问题?您有有效的声音效果文件吗?或有关格式的任何建议?我在某个地方也读过96khz 16位ogg文件,我也尝试过。

    编辑:重要通知

    我在手机上玩游戏。我开车撞了一些炸药。听起来一样,然后我回到菜单。我忘了打开手机。游戏正在运行。但是屏幕会自动锁定。它大概走了15到20分钟。然后尝试再解锁一次屏幕,发生了什么?突然间,所有爆炸物爆炸了,我的声音真的很好而且很完整,菜单屏幕仍在显示。因此,我认为当游戏暂停足够时间后,声音效果就可以准备好并且可以很好地播放了,我可以得出结论。这是什么意思?声音效果尚未从内存中加载,但我正在尝试播放?或准备在这里还有其他含义?我使用 Assets 管理器的isLoaded()方法检查是否已加载它返回true。我只是在调用声音的play方法之前这样做的。我应该相信这个isLoaded方法吗?要不然是啥?

    好吧,伙计们感谢您的提前帮助。

    抱歉,我保留了很长时间,我将继续尝试和研究。

    最佳答案

    我很确定这里的问题是您的声音效果为1MB或更大。它在libgdx Wiki中说,如果声音文件大于1MB,则将在Android上引起问题,需要使用音乐类代替声音类。

    关于java - Libgdx声音效果仅在Android上无法流畅或完全播放(声音上的滞后效果),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32299658/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com