当前位置: 首页 > 面试题库 >

Libgdx:音轨循环中的滞后

文志学
2023-03-14
问题内容

我在libgdx中的音乐循环时遇到麻烦。我知道以前有一个Simmilair主题,但这完全没有帮助。关键是,当您进入游戏的主菜单(链接)时,雨声就回响了。不幸的是,每场比赛之间只有片刻的沉默,我不知道为什么-
您可以下载游戏,看看我的意思。我已经在使用.ogg格式,因此在这里找到的其他主题的解决方案并没有真正的帮助。

如果我在Audacity中循环播放此声音,则效果很好。

这是我的代码(不过,我认为这不会有所帮助):

rainSoundtrack = Gdx.audio.newMusic(Gdx.files.internal("soundtrack.ogg"));
rainSoundtrack.setLooping(true);

问题答案:

问题是libGDX处理音乐的方式。我将在GitHub Issue
1654
上引用badlogic文章。

Android的情况更加复杂和令人难过。在Android上,我们使用系统功能来播放音频,即MediaPlayer。这些Android软件在后台使用了设备依赖驱动程序(音频驱动程序,自定义编解码器实现等)。这意味着我们受到三星等硬件供应商及其驱动程序实施的支配。

该问题不仅限于libGDX,它是Android问题18756。

您的音轨在内存大小方面既短又小,因此在这种情况下使用libGDX声音实际上更好,并且没有此漏洞。

音乐->长而大的文件,未加载到内存中

声音->大小不一的文件,已加载到内存中

使用Sound类并循环播放。例:

long id;
...
public void create() {
    music = Gdx.audio.newSound(Gdx.files.internal("soundtrack.ogg"));
    id = music.loop(); //Sound may not be ready here!
}

public void render() {
    if(id == -1)
        id = music.loop();
}


 类似资料:
  • 问题内容: 美好的一天! 我正在做一个游戏,但我希望它有背景声音。我为此创建了一个类,并在主类上调用它。我的代码如下: 这是我上课的主要地点。 我的问题是音乐无法播放。这是什么意思?我的文件类型为Microsoft Wave声音格式,大小为796kb。我可以知道我做错了吗?您的建议将不胜感激。先感谢您。 问题答案: 我的猜测是文件已以类无法理解的格式进行编码。我找不到该类的文档(??),但是我会尝

  • 大家都来!所以基本上这就是我想要实现的: 我有一个约3分钟长的静音视频。我有一个mp3格式的音轨列表(40首歌曲在一个文件夹中,每首持续时间为2到6分钟) 我想让这个视频自动循环播放,从播放列表中提取歌曲,并将它们一个接一个地注入到视频中。每当一首歌结束时,列表中的下一首应该在此刻开始播放。视频继续播放,不关心曲目的持续时间。 我认为这是在youtube上以24/7模式播放带有视频背景的广播的第一

  • 问题内容: 我最近一直在使用HTML5音频进行播放,尽管我可以播放HTML5音频,但只能播放一次。无论我尝试什么(设置属性,事件处理程序等),我似乎都无法使其循环。 这是我正在使用的基本代码: 我正在使用Chrome(6.0.466.0开发人员)和Firefox(4beta1)进行测试,这两者似乎都很乐意忽略我的循环请求。有任何想法吗? 更新 :现在,所有主流浏览器都支持loop属性。 问题答案:

  • 我正在用libGDX开发一个小游戏,它使用Box2D进行冲突检测。这很好,直到我在游戏中添加了一个箭头,这样玩家就可以射击了。自从我添加了这个功能,我就面临着游戏不时卡住的问题,并且不再有反应。 我认为这种行为的原因是Box2D世界步骤中的某个地方有一个无休止的循环。当我使用调试器停止执行时,停止点总是在方法中。不幸的是,这是一个本地方法,所以我找不到问题的确切位置: 问题是: 有时,当使用新的“

  • 视频怎么实现切换音轨,实现这种效果,用了videojs一直报错