2011-02-14 10 views
5

मैंने जावा के साथ बहुत कुछ संघर्ष किया है लेकिन जावा .wav से .mp3 कनवर्टर के एक कामकाजी उदाहरण को गठबंधन नहीं कर सका। इस कनवर्टर का उपयोग जावा एप्लेट में किया जाएगा, इसलिए इसे केवल शुद्ध जावा में लिखे गए पुस्तकालयों पर निर्भर होना चाहिए जिसमें कोई अंतर्निहित सी कोड कॉल नहीं है।क्या .wav to .mp3 को बदलने के लिए कोई शुद्ध जावा तरीका है?

कोई भी पूरी तरह से काम कर रहे उदाहरण प्रदान कर सकता है?

धन्यवाद

+0

ठीक है, आपको शुद्ध जावा में लिखा गया एक .way डिकोडर और एक। एमपी 3 एन्कोडर चाहिए। क्या वहां ऐसी कोई चीज है? मुझे शक है। – delnan

+0

[जावा में एमपी 3 एन्कोडिंग] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/316612/mp3-encoding-in-java) –

+0

करीब, हालांकि यहां जवाब अधिक उपयोगी थे –

उत्तर

6

@http://java.sun.com/javase/technologies/desktop/media/jmf/ पढ़ें अपनी लहर फ़ाइल और @http://openinnowhere.sourceforge.net/lameonj/

के रूप में बताया एमपी 3 करने के लिए सांकेतिक शब्दों में बदलना, lameonj एक शुद्ध जावा समाधान नहीं है। इसके लिए विकल्प बहुत अधिक प्रतीत नहीं होते हैं, लेकिन अन्य SO प्रश्न देखें: MP3 Encoding in Java

+0

कि किसी को देशी LAME binaries – mihi

+0

की आवश्यकता होगी संक्षेप में +1 –

+0

धन्यवाद, मुझे लगता है कि मैं नेस्टेडवीएम उत्तर –

3

यदि गति आपके लिए महत्वपूर्ण नहीं है, तो एमपी 3 (जैसे लंगड़ा) का कोई भी सी कार्यान्वयन करें और इसे NestedVM जावा में संकलित करने का प्रयास करें बाईटकोड। यह धीमा हो जाएगा (एक एमुलेटर में एक एमुलेटर की तरह), लेकिन यह काम करना चाहिए।

और शुद्ध जावा में एमपी 3 लाइब्रेरी को बंद करने की कोशिश करने से यह कम काम होना चाहिए।

+0

के साथ अपना जवाब गठबंधन करूंगा, धन्यवाद, यह मेरा एकमात्र विकल्प है। NestedVM को मेरे ध्यान में लाने के लिए –

+0

+1। बहुत ही शांत। –

0

एक अन्य संभावित प्रासंगिक परियोजना jffmpeg है। यह स्पष्ट रूप से देशी और जावा कोडेक्स दोनों का उपयोग करके स्वरूपों की विस्तृत श्रृंखला के लिए जेएमएफ समर्थन का लक्ष्य रखता है। 'प्रारूप' पृष्ठ से निर्णय लेने से, उन्होंने शुद्ध जावा पक्ष पर महत्वपूर्ण प्रगति की। दुर्भाग्यवश, परियोजना शांत हो गई है।

यह ओपी को अल्प अवधि में सीधे मदद नहीं करता है। लेकिन अगर वह या अन्य लंबे समय तक शुद्ध जावा कोडेक्स रखने के इच्छुक हैं, तो शामिल होने पर विचार करें।

0

बस निम्न स्रोत कोड देखें। http://jsidplay2.cvs.sourceforge.net/jsidplay2/jump3r यह अभी भी प्रगति पर है, लेकिन एक शुद्ध जावा आधारित लंग पुस्तकालय के एन्कोडर भाग का एक कामकाजी उदाहरण है।

0

SourceForge पर यह लिंक देखें http://sourceforge.net/projects/jump3r/files/

इसके जार के केवल (कोई स्रोत कोड), लेकिन यह दोनों पीसी और Android पर काम करता है, लेकिन कोई जरूरी लेखकों http://pure-java-mp3-encoder.blogspot.com.au/

पोस्टिंग में वर्णित के रूप मैं समझ गया लाइब्रेरी के रूप में jump3r-1.0.3.jar फ़ाइल का उपयोग करके काम करने के लिए, और तत्काल एमपी 3 का उपयोग करके काम करने के लिए। मुख्य रूप से mp3.run() जैसे कहा जाता है मेरे Android कोड का हिस्सा

String[] mp3Args = {"--preset","standard", 
      "-q","0", 
      "-m","s", 
      Environment.getExternalStorageDirectory().getPath()+"/myfile.wav", 
      Environment.getExternalStorageDirectory().getPath()+"/myfile.mp3"}; 
    Main m = new mp3.Main(); 
    try 
    { 
     m.run(mp3Args); 
    } 
    catch(Exception e) 
    { 
     System.out.println("ERROR processing MP3 " + e);// Some bug in Android seems to cause error BufferedOutputSteam is Closed. But it still seems to work OK. 
    } 

मुझे लगता है यह सीधे लंगड़ा एनकोडर डेटा आदि की बफ़र्स गुजर कॉल करने के लिए संभव हो जाएगा, लेकिन यह जावा संस्करण के लिए सटीक एपीआई के रूप में दर्ज नहीं किया जाता है, यह कुछ शोध की आवश्यकता होगी

2

मैं अपने प्रोजेक्ट पर एमपी 3 को एमपी 3 में परिवर्तित करने के लिए Jump3r का उपयोग करता हूं क्योंकि आईई 11 का एचटीएमएल 5 प्लेयर वैव फाइल नहीं चला सकता है।

Jump3r एक टोमकैट सर्वलेट के अंदर चलाने के लिए सबसे आसान समाधान है। मैं सुरक्षा प्रबंधक के कारण निश्चित रूप से जेव जैसे अन्य समाधानों को एकीकृत करने में सक्षम नहीं था ... Jump3r एक शुद्ध जावा कार्यक्रम है।

Jump3r Maven भंडार (https://mvnrepository.com/artifact/de.sciss/jump3r/1.0.4) पर उपलब्ध है और सूत्रों का कहना है GitHub पर उपलब्ध हैं (https://github.com/Sciss/jump3r)

एक फ़ाइल बदलने के लिए, आप, मुख्य विधि (निम्नलिखित कोड में बुलाना चाहिए मैं एक inlined संस्करण का उपयोग यदि आवश्यक हो तो IOException को पकड़ने/फेंकने के मुख्य विधि में)

private void convertWavFileToMp3File(File source, File target) throws IOException { 
    String[] mp3Args = { "--preset","standard", 
     "-q","0", 
     "-m","s", 
     source.getAbsolutePath(), 
     target.getAbsolutePath() 
    }; 
    (new Main()).run(mp3Args); 
} 
संबंधित मुद्दे