質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

3575閲覧

【eclipse】wavファイルが再生できない

junpeihamasaki

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2019/12/23 08:23

前提・実現したいこと

Javaでゲームを製作しているのですが、wavが再生できなくて困っています。
AudioClipを使用したいのですがJava11では使えませんでした。
従ってこちらのサイト「https://nompor.com/2017/12/14/post-128/」の方法を使ってwavの再生を試みたのですが上手くいきませんでした。
mp3でもwavでもなんでも良いので、Java11かつエクリプス上で簡単に音声が再生できる方法を教えて頂けないでしょうか。
また、Exception in thread "main" java.lang.IllegalArgumentException: No line matching interface Clip supporting format PCM_SIGNED 44100.0 Hz, 24 bit, stereo, 6 bytes/frame, little-endian is supported.の意味は何なんでしょうか。原因と解決方法の検討が全く分かりません。

発生している問題・エラーメッセージ

Exception in thread "main" java.lang.IllegalArgumentException: No line matching interface Clip supporting format PCM_SIGNED 44100.0 Hz, 24 bit, stereo, 6 bytes/frame, little-endian is supported. at java.desktop/javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:425) at タイトルパネル.TitlePanel.createClip(TitlePanel.java:86) at タイトルパネル.TitlePanel.<init>(TitlePanel.java:27) at メインパネル.MainPanel.<init>(MainPanel.java:33) at フレーム設定.FrameOption.<init>(FrameOption.java:14) at メイン関数.GameMain.main(GameMain.java:10)

該当のソースコード

Java

1package タイトルパネル; 2 3import java.awt.Color; 4import java.awt.Font; 5import java.awt.event.ActionEvent; 6import java.awt.event.ActionListener; 7import java.io.IOException; 8import java.net.MalformedURLException; 9 10import javax.sound.sampled.AudioFormat; 11import javax.sound.sampled.AudioInputStream; 12import javax.sound.sampled.AudioSystem; 13import javax.sound.sampled.Clip; 14import javax.sound.sampled.DataLine; 15import javax.sound.sampled.LineUnavailableException; 16import javax.sound.sampled.UnsupportedAudioFileException; 17import javax.swing.ImageIcon; 18import javax.swing.JButton; 19import javax.swing.JLabel; 20import javax.swing.JPanel; 21 22import メインパネル.MainPanel; 23 24public class TitlePanel extends JPanel implements ActionListener{ 25 MainPanel mp; 26 public TitlePanel() { 27 Clip clip = createClip(this.getClass().getResource("bgm.wav")); 28 clip.start(); 29 setBackground(Color.black);//背景色設定 30 setFocusable(true); 31 setLayout(null);//ボタンの配置の自由化 32 //画像参照の設定 33 ClassLoader classLoader = this.getClass().getClassLoader(); 34 java.net.URL resUrl = classLoader.getResource("graphic_data/titlepanel.png"); 35 ImageIcon image = new ImageIcon(resUrl); 36 JLabel bg = new JLabel(image); 37 bg.setSize(1080,720); 38 //ボタン1設定 39 JButton btn1 = new JButton("1 PLAYER GAME A"); 40 btn1.setFont(new Font("Arial" , Font.PLAIN , 35)); 41 btn1.setForeground(Color.orange); 42 btn1.setContentAreaFilled(false); 43 btn1.setBorderPainted(false); 44 btn1.setBounds(360,450, 350, 80); 45 btn1.addActionListener(this); 46 btn1.setActionCommand("1 PLAYER GAME A"); 47 //ボタン2設定 48 JButton btn2 = new JButton("1 PLAYER GAME B"); 49 btn2.setFont(new Font("Arial" , Font.PLAIN , 35)); 50 btn2.setForeground(Color.orange); 51 btn2.setContentAreaFilled(false); 52 btn2.setBorderPainted(false); 53 btn2.setBounds(360,510, 350, 80); 54 btn2.addActionListener(this); 55 btn2.setActionCommand("1 PLAYER GAME B"); 56 //ボタンとラベルの追加 57 add(btn1); 58 add(btn2); 59 add(bg); 60 } 61 62 @Override 63 public void actionPerformed(ActionEvent e) { 64 String cmd = e.getActionCommand(); 65 if (cmd.equals("1 PLAYER GAME A")) { 66 System.out.println("Aにすすむ"); 67 mp.state = 1; 68 } else if (cmd.equals("1 PLAYER GAME B")) { 69 System.out.println("Bにすすむ"); 70 } 71 } 72 public static Clip createClip(java.net.URL url) { 73 //指定されたURLのオーディオ入力ストリームを取得 74 try (AudioInputStream ais = AudioSystem.getAudioInputStream(url)){ 75 76 //ファイルの形式取得 77 AudioFormat af = ais.getFormat(); 78 79 //単一のオーディオ形式を含む指定した情報からデータラインの情報オブジェクトを構築 80 DataLine.Info dataLine = new DataLine.Info(Clip.class,af); 81 82 //指定された Line.Info オブジェクトの記述に一致するラインを取得 83 Clip c = (Clip)AudioSystem.getLine(dataLine); 84 85 //再生準備完了 86 c.open(ais); 87 88 return c; 89 } catch (MalformedURLException e) { 90 e.printStackTrace(); 91 } catch (UnsupportedAudioFileException e) { 92 e.printStackTrace(); 93 } catch (IOException e) { 94 e.printStackTrace(); 95 } catch (LineUnavailableException e) { 96 e.printStackTrace(); 97 } 98 return null; 99 } 100} 101 102

試したこと

wavのサイズが大きいとエラーになる、PCに対応するオーディオがないなど調べましたが全くわかりませんでした。

補足情報(FW/ツールのバージョンなど)

Java11

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

量子化ビット数24ということは、ハイレゾの音源でしょうか?

これには非対応ということでしょう。

投稿2019/12/23 08:55

ngsvx

総合スコア287

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

junpeihamasaki

2019/12/23 09:04

ご回答ありがとうございます。 ユーチューブ上のmp4の動画をwavに変換したのを使用したことが原因ですかね? さらにReaperという音声ソフトでそのwavをレンダリングしています。 そのせいでハイレゾ判定になってしまったかもしれません。
junpeihamasaki

2019/12/23 09:17

ありがとうございました! 24bit未満にしたら解決しました! 本当に感謝しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問