Sau vô số giờ tìm kiếm và đọc qua nhiều mã nguồn, tôi đang ở điểm chết và tôi cần sự giúp đỡ của bạn. Như tiêu đề cho thấy tôi đang cố gắng để xây dựng (chưa một) máy nghe nhạc trong Java. Tôi stumbled khi Javazoom project và nó kinda hoạt động, nhưng nó cũng kinda không. Mục tiêu của tôi là có thể phát các tệp mp3 và ogg. Chơi nhạc mp3 hoạt động mà không có vấn đề gì: Tôi có thể nhận tất cả thông tin (thẻ ID3 và thông tin tệp âm thanh chung) và tôi có thể thực hiện tất cả các thao tác cần thiết (phát, tạm dừng, tiếp tục, tìm kiếm, v.v.). Nhưng khi tôi cố gắng chơi các tập tin ogg tôi chỉ có thể nhận được một trong hai, hoặc là tôi có thể phát tệp nhưng không nhận được thông tin tệp hoặc tôi nhận được tất cả thông tin nhưng không thể phát tệp. Mã của tôi về cơ bản là phiên bản cải tiến của lớp BasicPlayer, tôi đã thử xem qua trình phát jlGui để xem cách nó quản lý tương thích với mọi định dạng nhưng tôi hoàn toàn bị mất trong mã đó.Java đang phát mp3 và ogg
Đây là lệnh tôi sử dụng để biên dịch chương trình:
javac -cp lib\jl1.0.1.jar;lib\jogg-0.0.7.jar;lib\jorbis-0.0.15.jar;liblog4j-1.2.16.jar;lib\mp3spi1.9.5.jar;lib\tritonus_share-0.3.6.jar;libvorbisspi1.0.3.jar MediaPlayer.java
Khi tôi thực hiện nó với
java -cp .;lib\jl1.0.1.jar;lib\jogg-0.0.7.jar;lib\jorbis-0.0.15.jar;liblog4j-1.2.16.jar;lib\mp3spi1.9.5.jar;libtritonus_jorbis-0.3.6.jar;libtritonus_share-0.3.6.jar;libvorbisspi1.0.3.jar MediaPlayer d:/foo.mp3
nó sẽ hiển thị các thông tin và chơi các tập tin tốt, nhưng khi tôi cố gắng tương tự cho d: /foo.ogg Tôi nhận được ngoại lệ:
167 [main] DEBUG MediaPlayer - Target format: PCM_SIGNED 48000.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian
Exception in thread "main" java.lang.RuntimeException: Error initializing stream: java.lang.IllegalArgumentException: Unsupported conversion: PCM_SIGNED 48000.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian from VORBISENC 48000.0 Hz, unknown bits per sample, stereo, 1 bytes/frame, 16000.0 frames/second,
at MediaPlayer.initAudioStream(MediaPlayer.java:302)
at MediaPlayer.open(MediaPlayer.java:663)
at MediaPlayer.main(MediaPlayer.java:772)
Nhưng khi tôi sau đó nhận xét dòng 262 (gọi createLine() trong initAudioStream()) và chạy nó với lệnh cùng nó sẽ hiển thị tất cả các thông tin tập tin nhưng ném một ngoại lệ tương tự
170 [main] DEBUG MediaPlayer - Target format: PCM_SIGNED 48000.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian
Exception in thread "main" java.lang.IllegalArgumentException: Unsupported conversion: PCM_SIGNED 48000.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian from VORBISENC 48000.0 Hz, unknown bits per sample, stereo, 1 bytes/frame, 16000.0 frames/second,
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at MediaPlayer.createLine(MediaPlayer.java:362)
at MediaPlayer.initLine(MediaPlayer.java:392)
at MediaPlayer.startPlayback(MediaPlayer.java:483)
at MediaPlayer.play(MediaPlayer.java:672)
at MediaPlayer.main(MediaPlayer.java:773)
VÀ khi tôi sau đó thêm lib \ tritonus_jorbis-0.3.6.jar vào classpath nó phát tệp ogg nhưng không hiển thị thông tin.
Vì vậy, vâng ... Tôi khá bối rối và thực sự có thể sử dụng một số trợ giúp.