Çözüldü: Java'da sesler nasıl oynanır

Son Güncelleme: 06/19/2023

Sesler nasıl çalınır? Bu makalede, geliştiricilerin oyunlar ve multimedya oynatıcılar gibi çeşitli uygulamalar oluştururken karşılaştıkları yaygın bir sorun olan Java'da ses çalma konusunu ele alacağız. Adım adım bir çözümü tartışacağız, bu görevi gerçekleştirmek için gereken kitaplıkları keşfedeceğiz ve kodun ayrıntılı bir açıklamasını sağlayacağız. Çok yönlülüğü ve kullanım kolaylığı ile tanınan Java, geliştiricilerin uygulamalarının işlevselliğini ve yeteneklerini geliştirmesine yardımcı olabilecek çeşitli kitaplıklarla donatılmıştır. Böyle önemli bir alan, ses ve ses desteğini içerir.

Java Ses API'sine Giriş

Java Sound API, tüm platformlarda ses desteği sağlamak üzere tasarlanmış güçlü bir araç setidir. Java Geliştirme Kiti (JDK) ile birlikte gelir ve geliştiricilerin çeşitli formatlardaki ses dosyalarını oynatmasına, kaydetmesine ve işlemesine olanak tanır. Bu yazımızda Java Sound API'nin bir parçası olan AudioClip ve AudioSystem sınıflarını kullanarak Java uygulamalarında ses çalmanın temellerine odaklanacağız.

Java Ses API'si iki temel pakete ayrılabilir: javax.sound.sampled ve javax.sound.midi . sampled paketi, ses verilerini çalma, kaydetme ve sentezleme gibi temel ses işlevlerini yönetmek için kullanılırken, midi paketi MIDI tabanlı müzik bestelerini ve film müziklerini yönetmek için tasarlanmıştır.

AudioClip kullanarak Sesleri Çalma

Öncelikle, java.applet paketinin bir parçası olan AudioClip arayüzünü kullanarak ses dosyalarını nasıl oynatacağımızı inceleyelim . AudioClip arayüzü başlangıçta applet'ler için oluşturulmuş olsa da, Java uygulamalarında küçük ses dosyalarını oynatmak için hala geçerli ve kullanışlıdır.

import java.applet.AudioClip;
import java.net.URL;
public class SoundPlayer {
    public static void main(String[] args) {
        AudioClip sound;
        URL soundURL = SoundPlayer.class.getResource("sound.wav");
        sound = java.applet.Applet.newAudioClip(soundURL);
        sound.play();
    }
}

Yukarıdaki kod parçacığında, AudioClip arayüzünü ve URL sınıfını içe aktardık . Bu sınıflar, bir ses kaynağını yüklememize ve AudioClip örneğinin play() yöntemini kullanarak oynatmamıza olanak tanır. AudioClip kullanmak için, "sound.wav" dosyasını Java dosyanızla aynı dizine koyduğunuzdan veya doğru dosya yolunu belirttiğinizden emin olun.

Ancak, daha büyük ses dosyalarıyla çalışıyorsanız veya oynatma üzerinde daha gelişmiş bir kontrole ihtiyacınız varsa AudioClip arayüzü yeterli olmayabilir ve AudioSystem sınıfını kullanmayı düşünmelisiniz.

AudioSystem sınıfını kullanarak sesleri çalma

AudioSystem sınıfı , javax.sound.sampled paketinin bir parçasıdır ve daha gelişmiş ses çalma yetenekleri sağlar. Aşağıdaki örnek, AudioSystem sınıfını kullanarak bir ses dosyasını nasıl çalacağınızı göstermektedir:

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.File;
import java.io.IOException;

public class SoundPlayer {
    public static void main(String[] args) {
        try {
            File soundFile = new File("sound.wav");
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(soundFile);
            Clip clip = AudioSystem.getClip();
            clip.open(audioInputStream);
            clip.start();

            // Keep the application running till the sound is played completely
            Thread.sleep(clip.getMicrosecondLength() / 1000);
        } catch(LineUnavailableException | UnsupportedAudioFileException | IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Bu örnekte, öncelikle javax.sound.sampled paketinden gerekli sınıfları ve arayüzleri içe aktardık. Ardından, dosyadan ses verilerini okumak için bir AudioInputStream nesnesi ve ses verilerini bellekte tutmak için bir Clip örneği oluşturduk . Klipi açtıktan sonra, sesi çalmak için start() yöntemini çağırdık.

Bu yaklaşım, sesi duraklatma, devam ettirme, döngüye alma ve durdurma yeteneği de dahil olmak üzere ses oynatımı üzerinde daha fazla kontrol sağlayarak onu çok çeşitli uygulamalar için uygun hale getirir.

Özetlemek gerekirse, Java'da AudioClip ve AudioSystem sınıflarını kullanarak ses çalmaya yönelik iki farklı yaklaşımı tartıştık. AudioClip arayüzü basit uygulamalardaki küçük ses dosyaları için uygundur; AudioSystem sınıfı ise daha karmaşık senaryolar için gelişmiş ses oynatma özellikleri sunar. Java'nın güçlü kitaplıklarından yararlanmak, çeşitli uygulamalarda kesintisiz ses işlevselliği ve gelişmiş kullanıcı deneyimi sağlar.

İlgili Mesajlar: