Hello!
I am having a problem with playing ogg at android, i am just can’t get what it wrong. At the pc it works nice but i can’t run it at android (i have android 9 at the phone xiaomi 5 note pro if it is matters)
my code leads to the error:
java.lang.IllegalArgumentException: capacity < 0: -524
at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:254)
at com.jme3.util.AndroidBufferAllocator.allocate(AndroidBufferAllocator.java:111)
at com.jme3.util.BufferUtils.createByteBuffer(BufferUtils.java:989)
obtainBuffer(590) returned 90 = 90 + 0 err 0
at com.jme3.audio.plugins.NativeVorbisLoader.loadBuffer(NativeVorbisLoader.java:72)
obtainBuffer(500) returned 0 = 0 + 0 err -11
at com.jme3.audio.plugins.NativeVorbisLoader.load(NativeVorbisLoader.java:130)
at com.jme3.asset.DesktopAssetManager.loadLocatedAsset(DesktopAssetManager.java:260)
at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:374)
at com.jme3.asset.DesktopAssetManager.loadAudio(DesktopAssetManager.java:405)
at com.bukazoid.games.Game1.lambda$null$7(Game1.java:434)
at com.bukazoid.games.Game1.accessor$Game1$lambda7(Unknown Source:0)
at com.bukazoid.games.Game1$$Lambda$7.run(Unknown Source:6)
at com.bukazoid.games.basics.Safe.lambda$wrap$0(Safe.java:27)
at com.bukazoid.games.basics.Safe.accessor$Safe$lambda0(Unknown Source:0)
at com.bukazoid.games.basics.Safe$$Lambda$0.run(Unknown Source:4)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
my code is
_executor.execute(Safe.wrap(() -> {
log.info("create audio node");
AudioKey aKey = new AudioKey(musicFile);
AudioData aData = assetManager.loadAudio(aKey); // line 434
log.info("aData: {}", aData);
musicNode = new AudioNode(aData, aKey);
//musicNode = new AudioNode(assetManager, musicFile, DataType.Buffer);
log.info("audio node created: {}", musicNode);
musicNode.setName("background music");
musicNode.setPositional(false);
musicNode.setLooping(false);
musicNode.setVolume(0.5f);
enqueue(Safe.wrap(() -> {
log.info("play music");
guiNode.attachChild(musicNode);
musicNode.play();
}));
}));
but it is done at
AudioData aData = assetManager.loadAudio(aKey);
it looks like it it asking for negative buffer size: -524
jme 3.3.2-stable is used, same for 3.2.2-stable(i did migrate trying to solve the problem)
file size is: 1,084,807 bytes, i did get it for private usage, maybe i wil lbuy it in future.
So i can’t play mp3 - ok, i can’t play audio form non assets directory - ok, i may live with this, but i also can’t play file from android’s assets directory and it is fail for me.
Can you give me piece of advice how to manage this error? i can’ dig code a bit, but i need directions, also, it looks like it ends at native android’s code