জাভাতে .mp3 এবং .wav খেলছেন?


105

আমি আমার জাভা অ্যাপ্লিকেশনটিতে কীভাবে একটি .mp3এবং একটি .wavফাইল খেলতে পারি? আমি সুইং ব্যবহার করছি। আমি ইন্টারনেটে দেখার চেষ্টা করেছি, এর উদাহরণের মতো:

public void playSound() {
    try {
        AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("D:/MusicPlayer/fml.mp3").getAbsoluteFile());
        Clip clip = AudioSystem.getClip();
        clip.open(audioInputStream);
        clip.start();
    } catch(Exception ex) {
        System.out.println("Error with playing sound.");
        ex.printStackTrace();
    }
}

তবে, এটি কেবল .wavফাইলগুলি প্লে করবে ।

একই সাথে:

http://www.javaworld.com/javaworld/javatips/jw-javatip24.html

আমি একই পদ্ধতিতে .mp3ফাইল এবং .wavফাইল উভয়ই খেলতে সক্ষম হতে চাই ।


1
দেখে মনে হচ্ছে আপনার কোনও ধরণের প্লাগইন লাগবে। আপনার যা প্রয়োজন তা জেএমএফের উচিত। oracle.com/technetwork/java/javase/tech/index-jsp-140239.html
Otra

ঠিক আছে, আমি নিশ্চিত না যে এই জিনিসগুলি কীভাবে ব্যবহার করবেন, আমি এগুলি আগে কখনও ব্যবহার করি নি। আমি কীভাবে এটি ব্যবহার করতে পারি, কীভাবে এটি ব্যবহার করতে পারি?
স্ট্যান

জেএফএম 2003 সালে পরিত্যক্ত হয়েছিল। আপনি এটি ব্যবহার করার পরামর্শ দেওয়া হয় না।
joshreejones

3
এটি লক্ষণীয় যে, কোনও mainপদ্ধতিতে Thread.sleepশব্দটি শোনার জন্য এটি যুক্ত করা প্রয়োজন , অন্যথায় প্রোগ্রামটি শেষ হওয়ার আগেই শেষ হবে। এটি করার একটি দরকারী উপায় হ'ল:Thread.sleep(clip.getMicrosecondLength() / 1000);
আন্দ্রে ভ্যালেন্টি

উত্তর:


119

জাভা এফএক্সের রয়েছে Mediaএবং MediaPlayerক্লাসগুলি যা এমপি 3 ফাইল খেলবে।

উদাহরণ কোড:

String bip = "bip.mp3";
Media hit = new Media(new File(bip).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(hit);
mediaPlayer.play();

আপনার নিম্নলিখিত আমদানি বিবৃতিগুলির প্রয়োজন হবে:

import java.io.File;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;

5
চূড়ান্ত ইউআরএল রিসোর্স = getClass ()। getResource ("a.mp3");
নীল

44
এটা আমার পক্ষে কাজ করছে না। এটি বলে যে আমদানিগুলির অস্তিত্ব নেই। এবং আমি জাভা 7 চালাচ্ছি ...
পালসপান্ডা

9
stackoverflow.com/questions/15149547/… দেখে মনে হচ্ছে আপনি জাভা 7 ফোল্ডারের অভ্যন্তর থেকে জাভফএক্স লাইব্রেরি ম্যানুয়ালি যুক্ত করতে হবে যদি আপনি Eclipse ব্যবহার করেন।
Gyurme

7
টেকনিক্যালি, Mediaএবং MediaPlayerহয় না জাভা ক্লাস, কিন্তু JavaFX ক্লাস। ওএস এক্স বা উইন্ডোজে জাভাতে এমপি 3 সমর্থন যুক্ত করতে আপনি স্যাম্পলেডএসপি সন্ধান করতে পারেন । এবং হ্যাঁ - আমি সেই লাইব্রেরিগুলি লিখেছি।
হেনড্রিক

8
এটি কাজ করার জন্য আপনার জাভাএফএক্সও আরম্ভ করার দরকার নেই। stackoverflow.com/questions/14025718/...
user738048


18

আপনি জাভা এপিআই দিয়ে .wav খেলতে পারেন:

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

কোড:

AudioInputStream audioIn = AudioSystem.getAudioInputStream(MyClazz.class.getResource("music.wav"));
Clip clip = AudioSystem.getClip();
clip.open(audioIn);
clip.start();

এবং jLayer দিয়ে .mp3 খেলুন


4
এটা ভুল. জাভা ওয়াভ ছাড়াও অন্যান্য ধারক বিন্যাস খেলবে। তদুপরি, wav একটি ধারক বিন্যাস যা এমনকি এমপি 3 থাকতে পারে। সুতরাং জাভা সব ওয়াভ ফাইল খেলতে পারে না।
রেডিওডেফ

15

এটি ব্যবহার করার পরে অনেকক্ষণ হয়ে গেছে, তবে জাভালায়ার এমপি 3 প্লেব্যাকের জন্য দুর্দান্ত


হ্যাঁ, এটি খুব দুর্দান্ত। সহজ এবং প্ল্যাটফর্ম নির্ভর বলে মনে হচ্ছে না। একটি পটভূমিতে সূক্ষ্ম অভিনয় করে এবং কেবল থ্রেডটি কীভাবে থামানো যায় তা নির্ধারণ করতে হবে।
জেমস পি।

14

সম্পূর্ণ জাভাস.সাউন্ড এপিআই, একক মাভেন নির্ভরতা, সম্পূর্ণ ওপেন সোর্স ( জাভা 7 প্রয়োজনীয়) ব্যবহার করে:

pom.xml

 <!-- 
    We have to explicitly instruct Maven to use tritonus-share 0.3.7-2 
    and NOT 0.3.7-1, otherwise vorbisspi won't work.
   -->
<dependency>
  <groupId>com.googlecode.soundlibs</groupId>
  <artifactId>tritonus-share</artifactId>
  <version>0.3.7-2</version>
</dependency>
<dependency>
  <groupId>com.googlecode.soundlibs</groupId>
  <artifactId>mp3spi</artifactId>
  <version>1.9.5-1</version>
</dependency>
<dependency>
  <groupId>com.googlecode.soundlibs</groupId>
  <artifactId>vorbisspi</artifactId>
  <version>1.0.3-1</version>
</dependency>

কোড

import java.io.File;
import java.io.IOException;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine.Info;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;

import static javax.sound.sampled.AudioSystem.getAudioInputStream;
import static javax.sound.sampled.AudioFormat.Encoding.PCM_SIGNED;

public class AudioFilePlayer {

    public static void main(String[] args) {
        final AudioFilePlayer player = new AudioFilePlayer ();
        player.play("something.mp3");
        player.play("something.ogg");
    }

    public void play(String filePath) {
        final File file = new File(filePath);

        try (final AudioInputStream in = getAudioInputStream(file)) {

            final AudioFormat outFormat = getOutFormat(in.getFormat());
            final Info info = new Info(SourceDataLine.class, outFormat);

            try (final SourceDataLine line =
                     (SourceDataLine) AudioSystem.getLine(info)) {

                if (line != null) {
                    line.open(outFormat);
                    line.start();
                    stream(getAudioInputStream(outFormat, in), line);
                    line.drain();
                    line.stop();
                }
            }

        } catch (UnsupportedAudioFileException 
               | LineUnavailableException 
               | IOException e) {
            throw new IllegalStateException(e);
        }
    }

    private AudioFormat getOutFormat(AudioFormat inFormat) {
        final int ch = inFormat.getChannels();

        final float rate = inFormat.getSampleRate();
        return new AudioFormat(PCM_SIGNED, rate, 16, ch, ch * 2, rate, false);
    }

    private void stream(AudioInputStream in, SourceDataLine line) 
        throws IOException {
        final byte[] buffer = new byte[4096];
        for (int n = 0; n != -1; n = in.read(buffer, 0, buffer.length)) {
            line.write(buffer, 0, n);
        }
    }
}

তথ্যসূত্র:


এমপি 3 এবং ওজি উভয়ের জন্যই আমি এই ত্রুটিটি পেয়েছি: অসমর্থিত অডিও ফাইলে ধারণা: ইনপুট ফাইল থেকে অডিও ইনপুট স্ট্রিমটি পেতে পারেনি
ডেভিড উইনিস্কি

আমি কোডটি একটি মাভেন মডিউলে রেখেছি। এটি অবশ্যই কাজ করে: search.maven.org/…
odoepner

আমি সংস্করণ নম্বরগুলিতে এইগুলি আপগ্রেড করতে পারলাম: <ডিপেন্ডেন্সি> <groupId> com.googlecode.soundlibs </groupId> <সার্টিফিকেট আইডি> ট্রাইটোনাস ভাগ </ ਆਰটিফেক্টআইডি> <version> 0.3.7.4 </version> </d dependency> <নির্ভরতা> <groupId> com.googlecode.soundlibs </groupId> <artifactId> mp3spi </artifactId> <version> 1.9.5.4 </version> </d dependency> <d dependency> <groupId> com.googlecode.soundlibs </groupId> < আর্টিফ্যাক্টআইডি> ভারবিস্পি </ em> << সংস্করণ> 1.0.3-2 </version> </d dependency>
তবি

শুধুমাত্র verbisspi 1.0.3.3 যা সর্বশেষতমটি কাজ করে নি।
টিবিআই

এটি দুর্দান্ত, এটি বাক্সের বাইরে এমপি 3 এবং ডাব্লুএইভি'র জন্য কাজ করে!
মাইলস হেনরিচস

13

আমি বেসিকপ্লেয়ারিপি ব্যবহার করার পরামর্শ দেব। এটি ওপেন সোর্স, খুব সহজ এবং এর জন্য জাভাএফএক্স প্রয়োজন হয় না। http://www.javazoom.net/jlgui/api.html

জিপ-ফাইলটি ডাউনলোড এবং আহরণের পরে প্রকল্পের নির্মাণের পথে নিম্নলিখিত জার-ফাইল যুক্ত করা উচিত:

  • basicplayer3.0.jar
  • lib ডিরেক্টরি থেকে সমস্ত জার (BasicPlayer3.0 এর ভিতরে)

এখানে একটি স্বল্প ব্যবহারের উদাহরণ রয়েছে:

String songName = "HungryKidsofHungary-ScatteredDiamonds.mp3";
String pathToMp3 = System.getProperty("user.dir") +"/"+ songName;
BasicPlayer player = new BasicPlayer();
try {
    player.open(new URL("file:///" + pathToMp3));
    player.play();
} catch (BasicPlayerException | MalformedURLException e) {
    e.printStackTrace();
}

প্রয়োজনীয় আমদানি:

import java.net.MalformedURLException;
import java.net.URL;
import javazoom.jlgui.basicplayer.BasicPlayer;
import javazoom.jlgui.basicplayer.BasicPlayerException;

আপনার সংগীত বাজানো শুরু করা দরকার। প্লেয়ার তার নিজস্ব প্লেব্যাক থ্রেড শুরু এবং পরিচালনা করছে এবং প্লে, বিরতি, পুনরায় শুরু, থামানো এবং কার্যকারিতা সন্ধান করে।

আরও উন্নত ব্যবহারের জন্য আপনি jlGui সংগীত প্লেয়ারটি একবার দেখে নিতে পারেন। এটি ওপেন সোর্স উইনএ্যাম্প ক্লোন: http://www.javazoom.net/jlgui/jlgui.html

প্রথম শ্রেণীর সন্ধান প্লেয়ারইউআই হবে (প্যাকেজের ভিতরে জাভজুম.জলগুই.প্লেয়ার.অ্যাম্প)। এটি বেসিকপ্লেয়ারের উন্নত বৈশিষ্ট্যগুলি বেশ ভালভাবে প্রদর্শন করে।


ধন্যবাদ, আমি বর্তমান অ্যাপ্লিকেশনটিতে এমপি 3 সমর্থন যুক্ত করার চেষ্টা করার সবচেয়ে সহজ উপায়। তবে জাভা জুম সাইট থেকে mp3spi1.9.4.jarপ্রতিস্থাপন করা উচিত mp3spi1.9.5.jar
ওল্ড ব্যাডম্যান গ্রে

আপনার মূল থ্রেড পরে ঘুমাতে ভুলবেন না player.play()বা আপনি কোনও শব্দ শুনতে পাচ্ছেন না।
jeremyjjbrown

7

সবচেয়ে সহজ উপায়টি আমি খুঁজে পেয়েছি হ'ল জালায়ার জার ফাইলটি http://www.javazoom.net/javalayer/source.html থেকে ডাউনলোড করা এবং এটি জার লাইব্রেরিতে যুক্ত করা http://www.wikihow.com/Add-JARs- টু-প্রজেক্ট-বিল্ড-পথ-ইন-Eclipse-% 28Java% 29

এখানে ক্লাসের জন্য কোড দেওয়া আছে

public class SimplePlayer {

    public SimplePlayer(){

        try{

             FileInputStream fis = new FileInputStream("File location.");
             Player playMP3 = new Player(fis);

             playMP3.play();

        }  catch(Exception e){
             System.out.println(e);
           }
    } 
}

এবং এখানে আমদানি হয়

import javazoom.jl.player.*;
import java.io.FileInputStream;

1
হ্যাঁ এটি এই ভিডিওটি চেক করে না [ youtube.com/… এটি স্টপ এবং বিরতি দেওয়ার মতো সমস্ত ক্রিয়াকলাপের মধ্য দিয়ে যায়।
ভ্লাদ

1
আমি মনে করি এটি ইতিমধ্যে এই ফাংশনগুলি থাকা উচিত, যেহেতু তারা এগুলি বেসিক বলে মনে হয়। যাইহোক, আমি অন্য লাইব্রেরির সাথে অন্য একটি সমাধান পেয়েছি, উত্তরের জন্য ধন্যবাদ :)
N3sh

5

পাঠকদের অন্য বিকল্প দেওয়ার জন্য, আমি জ্যাকো এমপি 3 প্লেয়ার লাইব্রেরি, একটি ক্রস প্ল্যাটফর্ম জাভা এমপি 3 প্লেয়ারের পরামর্শ দিচ্ছি।

বৈশিষ্ট্য:

  • খুব কম সিপিইউ ব্যবহার (~ 2%)
  • অবিশ্বাস্য ছোট গ্রন্থাগার (~ 90KB)
  • জেএমএফের প্রয়োজন নেই (জাভা মিডিয়া ফ্রেমওয়ার্ক)
  • কোনও অ্যাপ্লিকেশন একীভূত করা সহজ
  • যে কোনও ওয়েব পৃষ্ঠায় একীভূত করা সহজ (অ্যাপলেট হিসাবে)।

এর পদ্ধতি এবং বৈশিষ্ট্যগুলির একটি সম্পূর্ণ তালিকার জন্য আপনি এখানে এটির ডকুমেন্টেশন চেক করতে পারেন ।

কোডের উদাহরণ:

import jaco.mp3.player.MP3Player;
import java.io.File;

public class Example1 {
  public static void main(String[] args) {
    new MP3Player(new File("test.mp3")).play();
  }
}

আরও তথ্যের জন্য, আমি এখানে একটি সাধারণ টিউটোরিয়াল তৈরি করেছি যাতে ডাউনলোডযোগ্য উত্সকোড অন্তর্ভুক্ত রয়েছে।


বাহ, এটি অবিশ্বাস্য সহজ ছিল।
ওয়েসোস ডি কুইসো 6:59

উত্স কোড ডাউনলোড লাইব্রেরিতে প্রকৃত উত্স কোড দেয় না?
a8_

4

ব্যবহার MP3 টি সঙ্কেতমোচক / খেলোয়াড় / কনভার্টার ম্যাভেন নির্ভরতা।

import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class PlayAudio{

public static void main(String[] args) throws FileNotFoundException {

    try {
        FileInputStream fileInputStream = new FileInputStream("mp.mp3");
        Player player = new Player((fileInputStream));
        player.play();
        System.out.println("Song is playing");
        while(true){
            System.out.println(player.getPosition());
        }
    }catch (Exception e){
        System.out.println(e);
    }

  }

}

2

আপনাকে প্রথমে জেএমএফ ইনস্টল করতে হবে ( এই লিঙ্কটি ব্যবহার করে ডাউনলোড করুন )

File f = new File("D:/Songs/preview.mp3");
MediaLocator ml = new MediaLocator(f.toURL());
Player p = Manager.createPlayer(ml);
p.start();

জেএমএফ জারের ফাইলগুলি যুক্ত করতে ভুলবেন না


5
নোট করুন যে জেএমএফকে অনেক আগে সান / ওরাকল ত্যাগ করেছে।
হেনড্রিক

1

জাভা (টা জাভা অডিও ভিডিও এনকোডার) এর জন্য লাইব্রেরি ( এখানে লিঙ্ক করুন ) এর জন্য ফ্রাইমেট নেটনের অনুসন্ধান করুন । এটি এই ধরণের জিনিসগুলির জন্য একটি গ্রন্থাগার। আমি জানিনা জাভা এর কোন নেটিভ এমপি 3 ফাংশন আছে কিনা।

যদি আপনি উভয় ধরণের ফাইল চালানোর জন্য একটি পদ্ধতি চান তবে আপনার সম্ভবত এমপি 3 ফাংশন এবং wav ফাংশনটি একসাথে মোড়ানো প্রয়োজন inherit


কাস্টম লাইব্রেরিগুলি কীভাবে ব্যবহার করা যায়, এর সাথে কোনও সহায়তা কীভাবে করব তা আমার আসলেই কোনও ধারণা নেই?
স্টান

গ্রন্থাগারটি ডাউনলোড করুন এবং আপনার কোডে একটি অন্তর্ভুক্ত বিবৃতি লিখুন। অন্তর্ভুক্ত লাইব্রেরি ব্যবহার সম্পর্কে নির্দেশাবলী থাকা উচিত। সাধারণত, কোনও ফাংশন কলই যথেষ্ট, যদিও আপনাকে প্রথমে কোনও বিষয় ঘোষণার প্রয়োজন হতে পারে। তারপরে, এমন একটি ফাংশন তৈরি করুন যা এর ইনপুটটির ফাইল এক্সটেনশানটি পরীক্ষা করে এবং আপনার পছন্দসই লাইব্রেরি ফাংশনটিকে কল করে।
স্পেনসার রথবুন

0

জাভা সাউন্ডে এমপি 3 রিডিং সমর্থন যুক্ত করতে, mp3plugin.jarঅ্যাপ্লিকেশনটির রান-টাইম শ্রেণির পথে জেএমএফ যুক্ত করুন ।

নোট করুন যে Clipশ্রেণীর মেমরির সীমাবদ্ধতা রয়েছে যা কয়েক সেকেন্ডেরও বেশি উচ্চ মানের শব্দটির জন্য এটি অনুপযুক্ত করে তোলে।


2
জেএমএফ 2003 এ পরিত্যক্ত হয়েছিল you আপনি এটি ব্যবহার করার পরামর্শ দেওয়া হয় না।
joshreejones

@ mathguy54 আমি যখন লোকেদের এটি ব্যবহার না করার পরামর্শ দিই, এটি কারণ এটি যথেষ্ট পরিমাণে বিভিন্ন ধরণের মিডিয়া সমর্থন করে না। তবুও, এমপিথ্রি ডিকোডিংয়ের জন্য এটি এখনও সম্পূর্ণ পর্যাপ্ত।
অ্যান্ড্রু থম্পসন

0

আমার এটির জন্য অন্যান্য পদ্ধতি রয়েছে, প্রথমটি হ'ল:

public static void playAudio(String filePath){

    try{
        InputStream mus = new FileInputStream(new File(filePath));
        AudioStream aud = new AudioStream(mus);
    }catch(Exception e){
        JOptionPane.showMessageDialig(null, "You have an Error");
    }

এবং দ্বিতীয়টি হ'ল:

try{
    JFXPanel x = JFXPanel();
    String u = new File("021.mp3").toURI().toString();
    new MediaPlayer(new Media(u)).play();
} catch(Exception e){
    JOPtionPane.showMessageDialog(null, e);
}

এবং যদি আমরা এই অডিওটিতে লুপ করতে চাই আমরা এই পদ্ধতিটি ব্যবহার করি।

try{
    AudioData d = new AudioStream(new FileInputStream(filePath)).getData();
    ContinuousAudioDataStream s = new ContinuousAudioDataStream(d);
    AudioPlayer.player.start(s);
} catch(Exception ex){
    JOPtionPane.showMessageDialog(null, ex);
}

আমরা যদি এই লুপটি থামাতে চাই তবে আমরা চেষ্টা করে এই লাইব্রেরি যুক্ত করব:

AudioPlayer.player.stop(s);

এই তৃতীয় পদ্ধতির জন্য আমরা অনুসরণীয় আমদানি যুক্ত করি:

import java.io.FileInputStream;
import sun.audio.AudioData;
import sun.audio.AudioStream;
import sun.audio.ContinuousAudioDataStream;

-2

এই লাইব্রেরিটি ব্যবহার করুন: আমদানি করা সান.ওডিও *

public void Sound(String Path){
    try{
        InputStream in = new FileInputStream(new File(Path));
        AudioStream audios = new AudioStream(in);
        AudioPlayer.player.start(audios);
    }
    catch(Exception e){}
}

2
এটি খুব দীর্ঘ সময় ধরে সাউন্ড প্লে করার সঠিক উপায় নয়। আরও দেখুন সূর্যের মালিকানাধীন জাভা ক্লাস ব্যবহার করা কি খারাপ অভ্যাস? খালি ক্যাচ ব্লক সহ আপনার কোডটি একটি ভয়ানক উদাহরণ।
রেডিওডেফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.