itdelatrisu / opsu

opsu! ~ an open-source osu! client
https://itdelatrisu.github.io/opsu/
GNU General Public License v3.0
763 stars 123 forks source link

Cannot run program ffmpeg-mac #521

Open ghost opened 4 years ago

ghost commented 4 years ago

When I am playing some beatmaps, failed to load beatmap video errors occurred. .opsu.log shows the details.

Sat Jun 06 06:42:47 KST 2020 ERROR:Cannot run program "opsu/Natives/ffmpeg-mac": error=86, Bad CPU type in executable
java.io.IOException: Cannot run program "opsu/Natives/ffmpeg-mac": error=86, Bad CPU type in executable
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at itdelatrisu.opsu.video.FFmpeg.extractMetadata(FFmpeg.java:101)
    at itdelatrisu.opsu.video.Video.<init>(Video.java:80)
    at itdelatrisu.opsu.states.Game.loadVideo(Game.java:1976)
    at itdelatrisu.opsu.states.Game.enter(Game.java:1654)
    at org.newdawn.slick.state.StateBasedGame.update(StateBasedGame.java:248)
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:702)
    at itdelatrisu.opsu.Container.gameLoop(Container.java:136)
    at itdelatrisu.opsu.Container.start(Container.java:80)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:203)
Caused by: java.io.IOException: error=86, Bad CPU type in executable
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
    at java.lang.ProcessImpl.start(ProcessImpl.java:134)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    ... 9 more

I checked that opsu/Natives/ffmpeg-mac cannot be run on shell due to the same error.

$ ./opsu/Natives/ffmpeg-mac
zsh: bad CPU type in executable: ./opsu/Natives/ffmpeg-mac

I am using macOS Catalina 10.15.5. I guessed that it does not work because the bundled ffmpeg-mac is not compatible with macOS Catalina.

Thanks.

ghost commented 4 years ago

My workaround is:

  1. Install ffmpeg using brew.
  2. Run a shell and cd to opsu/Natives/ directory.
  3. Remove ffmpeg-mac file. (Or just replace its filename for backup.)
  4. Make a symbolic link: ln -s $(where ffmpeg) ./ffmpeg-mac.
  5. Restart the opsu.

This works for me.