以下の内容はhttps://nowokay.hatenablog.com/entry/2025/09/17/013904より取得しました。


Java 25でMP3を再生する

Java 25が昨日9/16にリリースされています。新機能まとめはこちらです。
Java 25新機能まとめ #OpenJDK - Qiita

その中で、javax.sound.SoundClipというクラスが新設されています。

次のようにしてWAVファイルを再生できます。

var file = new File("sound.wav");
var clip = SoundClip.createSoundClip(file);
clip.play();

いままで、音声ファイルを再生する一番手軽な手段はApplet APIのAudioClipだったのですが、Applet APIJava 17でDeprecatedになり、Java 26で削除の予定です。
JEP 398: Deprecate the Applet API for Removal
JEP 504: Remove the Applet API

そこで手軽に音声を再生するための代替手段として、SoundClipクラスが導入されました。
[JDK-8356049] Need a simple way to play back a sound clip - Java Bug System

ゲームの効果音を鳴らしてみる説明を次のエントリに書いています。
Java 25のSoundClipでゲームに効果音をつける - きしだのHatena

ただ、標準で対応しているのはWAVなどの16bit非圧縮PCM形式だけなので、MP3を再生することはできません。

MP3対応のSPIを導入することでMP3を再生することができます。

デコーダー(再生)にjlayerエンコーダーjava-lameを使うMP3SPIを読み込めば、MP3に対応します。
https://github.com/umjammer/mp3spi

クラスパスにMP3SPIのjarを置いておくだけです。 Mavenであれば、jitpack.ioをリポジトリに追加してmp3spiをdependencyに追加します。

    <repositories>
        <repository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
        </repository>
    </repositories>    
    <dependencies>
        <dependency>
            <groupId>com.github.umjammer</groupId>
            <artifactId>mp3spi</artifactId>
            <version>1.9.17</version>
        </dependency>
    </dependencies>

そうすると、こんな感じでソースコード上で何もしなくてもMP3ファイルが再生できるようになります。play()は再生終了を待たないので、ここでは5秒のウェイトを入れています。

import module java.base;
import javax.sound.SoundClip;

public class Mp3sample {
    void main() throws IOException, InterruptedException {
        var file = new File("music.mp3");
        var clip = SoundClip.createSoundClip(file);
        IO.println(clip.canPlay());
        clip.play();
        Thread.sleep(Duration.ofSeconds(5));
    }
}




以上の内容はhttps://nowokay.hatenablog.com/entry/2025/09/17/013904より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14