David Headrick
David Headrick

Reputation: 11

What is causing this error when loading in music with LibGDX?

I am following a tutorial on how to code a Mario game with Brent Aureli and LibGDX. On this part (video) we started on using sound. Here is a shorted version of the code I'm using:

 public static AssetManager manager;

@Override
public void create () {
    manager = new AssetManager();
    manager.load("mario_music.ogg", Music.class);
    manager.finishLoading();

    setScreen(new PlayScreen(this));
}

I have the "mario_music.ogg" in the right folder and named correctly (android/assets/mario_music.ogg) , yet I get this super long error:

E/AndroidRuntime: FATAL EXCEPTION: GLThread 19364
              Process: com.davidheadrick.mariogame, PID: 12739
              com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load dependencies of asset: mario_music.ogg
                  at com.badlogic.gdx.assets.AssetManager.handleTaskError(AssetManager.java:570)
                  at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:375)
                  at com.badlogic.gdx.assets.AssetManager.finishLoading(AssetManager.java:396)
                  at com.davidheadrick.mariogame.MarioGame.create(MarioGame.java:38)
                  at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:275)
                  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1550)
                  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1278)
               Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load dependencies of asset: mario_music.ogg
                  at com.badlogic.gdx.assets.AssetLoadingTask.handleAsyncLoader(AssetLoadingTask.java:121)
                  at com.badlogic.gdx.assets.AssetLoadingTask.update(AssetLoadingTask.java:90)
                  at com.badlogic.gdx.assets.AssetManager.updateTask(AssetManager.java:498)
                  at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:373)
                  at com.badlogic.gdx.assets.AssetManager.finishLoading(AssetManager.java:396) 
                  at com.davidheadrick.mariogame.MarioGame.create(MarioGame.java:38) 
                  at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:275) 
                  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1550) 
                  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1278) 
               Caused by: com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Error loading audio file: mario_music.ogg
              Note: Internal audio files must be placed in the assets directory.
                  at com.badlogic.gdx.utils.async.AsyncResult.get(AsyncResult.java:46)
                  at com.badlogic.gdx.assets.AssetLoadingTask.handleAsyncLoader(AssetLoadingTask.java:119)
                    ... 8 more
               Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Error loading audio file: mario_music.ogg
              Note: Internal audio files must be placed in the assets directory.
                  at com.badlogic.gdx.backends.android.AndroidAudio.newMusic(AndroidAudio.java:120)
                  at com.badlogic.gdx.assets.loaders.MusicLoader.loadAsync(MusicLoader.java:48)
                  at com.badlogic.gdx.assets.loaders.MusicLoader.loadAsync(MusicLoader.java:29)
                  at com.badlogic.gdx.assets.AssetLoadingTask.call(AssetLoadingTask.java:70)
                  at com.badlogic.gdx.assets.AssetLoadingTask.call(AssetLoadingTask.java:34)
                  at com.badlogic.gdx.utils.async.AsyncExecutor$2.call(AsyncExecutor.java:58)
                  at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                  at java.lang.Thread.run(Thread.java:818)
               Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
                  at android.content.res.AssetManager.openAssetFd(Native Method)
                  at android.content.res.AssetManager.openFd(AssetManager.java:346)
                  at com.badlogic.gdx.backends.android.AndroidFileHandle.getAssetFileDescriptor(AndroidFileHandle.java:237)
                  at com.badlogic.gdx.backends.android.AndroidAudio.newMusic(AndroidAudio.java:110)
                  at com.badlogic.gdx.assets.loaders.MusicLoader.loadAsync(MusicLoader.java:48) 
                  at com.badlogic.gdx.assets.loaders.MusicLoader.loadAsync(MusicLoader.java:29) 
                  at com.badlogic.gdx.assets.AssetLoadingTask.call(AssetLoadingTask.java:70) 
                  at com.badlogic.gdx.assets.AssetLoadingTask.call(AssetLoadingTask.java:34) 
                  at com.badlogic.gdx.utils.async.AsyncExecutor$2.call(AsyncExecutor.java:58) 
                  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                  at java.lang.Thread.run(Thread.java:818) 

I have no idea why it could be doing this as I'm using the same music file he's using in the tutorial. Any help is appreciated. Thanks!

Upvotes: 1

Views: 1117

Answers (1)

Mh_Bash
Mh_Bash

Reputation: 36

It appears to be the ("_") that you're using in your file path is the PROBLEM!. had the same problem, it seams that you cannot use Upercase letters and regular regexes and of course special chars

and check if you are specifying the path correctly. like when you declare: manager.load("mario_music.ogg", Music.class);

the asset is located in the root folder in : android/assets/

Upvotes: 1

Related Questions