2012-05-06 12 views
5

बहुत सारे स्रोत कोड के माध्यम से खोज और पढ़ने के अनगिनत घंटों के बाद मैं एक मृत अंत में हूं और मुझे आपकी मदद की आवश्यकता होगी। जैसा कि शीर्षक से पता चलता है कि मैं जावा में (अभी तक एक और) संगीत खिलाड़ी बनाने की कोशिश कर रहा हूं। मैं Javazoom project पर ठोकर खाई और यह थोड़ी सी काम करता है, लेकिन यह भी थोड़े नहीं करता है। मेरा लक्ष्य एमपी 3 और ओग फाइलों को चलाने में सक्षम होना है। एमपी 3 बजाना समस्या के बिना काम करता है: मैं सभी जानकारी (आईडी 3 टैग और सामान्य ऑडियो फ़ाइल जानकारी) प्राप्त कर सकता हूं और मैं सभी आवश्यक क्रियाएं (प्ले, पॉज़, रेज़्यूम, तलाश आदि) कर सकता हूं। लेकिन जब मैं ओग फाइलों को चलाने की कोशिश करता हूं तो मैं केवल दो में से एक प्राप्त कर सकता हूं, या तो मैं फ़ाइल चला सकता हूं लेकिन कोई फ़ाइल जानकारी नहीं प्राप्त करता हूं या मुझे सारी जानकारी मिलती है लेकिन फ़ाइल नहीं खेल सकती है। मेरा कोड मूल रूप से बेसिकप्लेयर क्लास का एक संशोधित संस्करण है, मैंने jlGui प्लेयर को देखने के लिए यह देखने के लिए प्रयास किया कि यह सभी प्रारूपों के साथ संगत कैसे प्रबंधित करता है लेकिन मैं उस कोड में पूरी तरह से खो गया हूं।जावा एमपी 3 और ओग

My MediaPlayer code

यहाँ आदेश मैं इस कार्यक्रम को संकलित करने के लिए उपयोग:

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 

जब मैंने इसे

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 

साथ निष्पादित यह जानकारी प्रदर्शित करता है और फ़ाइल ठीक खेलता है, लेकिन जब मैं d: /foo.ogg के लिए कोशिश करता हूं तो मुझे अपवाद मिलता है:

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) 

लेकिन जब मैं तो लाइन 262 (initAudioStream() में createLine() कॉल) टिप्पणी और एक ही आदेश यह सब फ़ाइल जानकारी प्रदर्शित करता है के साथ इसे चलाने लेकिन समान अपवाद

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) 

फेंकता है और जब मैं तो libp \ tritonus_jorbis-0.3.6.jar को क्लासपाथ में जोड़ें, यह ogg फ़ाइल चलाता है लेकिन कोई जानकारी प्रदर्शित नहीं करता है।

तो हाँ ... मैं बहुत स्टंप हूं और वास्तव में कुछ मदद का उपयोग कर सकता हूं।

उत्तर

0

आपकी समस्या इस धारणा से उत्पन्न होती है कि एक खिलाड़ी कार्यान्वयन स्ट्रीम के लिए मेटाडेटा भी प्रदान करेगा। दुर्भाग्यवश, कई कार्यान्वयन जहां मेटाडेटा प्रदान करने के गोयल के साथ कभी नहीं बनाया गया।

मैं मेटाडेटा को खेलने से पुनः प्राप्त करना अलग कर दूंगा, फिर आप मेटाडेटा तक पहुंचने के लिए विभिन्न पुस्तकालयों का उपयोग कर सकते हैं। आप फ़ाइल को चलाने से स्वतंत्र रूप से हल करने के लिए library specialized in metadata manipluation का उपयोग कर सकते हैं।

0

दुर्भाग्य से, jogg की javax.sound.sampled कार्यान्वयन कमियों की एक जोड़ी है। शायद आप FFsampledSP एक शॉट देना चाहते हैं। यह विन और ओएसएक्स के लिए एक एफएफएमपीजी आधारित कार्यान्वयन है जो javax.sound.sampled इंटरफेस को भी लागू करता है।

0

मुझे mp3spi 1.9.5-1 और vorbisspi 1.0.3-1 का उपयोग करके समान समस्याएं थीं। मुझे कक्षा के हिस्से में ट्राइटोनस-शेयर 0.3.7-2 और 0.3.7-1 साझा करना पड़ा, अन्यथा vorbisspi काम नहीं करेगा।

मैंने मैवेन निर्भरताओं का उपयोग किया। पूर्ण कार्य समाधान यहां है: http://odoepner.wordpress.com/2013/07/19/play-mp3-or-ogg-using-javax-sound-sampled-mp3spi-vorbisspi/

संबंधित मुद्दे