Решено: Как воспроизвести звуки на java

Последнее обновление: 06/19/2023
Автор: Java SourceTrail

Как воспроизвести звуки на В этой статье мы углубимся в воспроизведение звуков в Java — распространенную проблему, с которой сталкиваются разработчики при создании различных приложений, таких как игры и мультимедийные проигрыватели. Мы обсудим пошаговое решение, изучим библиотеки, необходимые для выполнения этой задачи, и предоставим подробное объяснение кода. Java, известная своей универсальностью и простотой использования, оснащена разнообразными библиотеками, которые могут помочь разработчикам улучшить функциональность и возможности своих приложений. Одна из таких важных областей включает звук и звуковую поддержку.

Введение в звуковой API Java

Java Sound API — это мощный инструментарий, предназначенный для обеспечения звуковой поддержки на всех платформах. Он поставляется в комплекте с Java Development Kit (JDK) и позволяет разработчикам воспроизводить, записывать и обрабатывать аудиофайлы в различных форматах. В этой статье мы сосредоточимся на основах воспроизведения звука в приложениях Java с помощью классов AudioClip и AudioSystem, которые являются частью Java Sound API.

Java Sound API можно разделить на два основных пакета: javax.sound.sampled и javax.sound.midi. Пакет Sampled используется для обработки основных аудиофункций, таких как воспроизведение, запись и синтез аудиоданных, тогда как пакет midi предназначен для управления музыкальными композициями и саундтреками на основе MIDI.

Воспроизведение звуков с помощью AudioClip

Для начала давайте рассмотрим, как воспроизводить звуковые файлы с помощью АудиоКлип интерфейс, который является частью java.апплет упаковка. Хотя интерфейс AudioClip изначально создавался для апплетов, он по-прежнему актуален и полезен для воспроизведения небольших аудиофайлов в Java-приложениях.

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();
    }
}

В приведенном выше фрагменте кода мы импортировали АудиоКлип интерфейс и URL сорт. Эти классы позволяют нам загружать аудиоресурс и воспроизводить его с помощью метода play() экземпляра AudioClip. Чтобы использовать AudioClip, обязательно поместите файл «sound.wav» в тот же каталог, что и ваш файл Java, или укажите правильный путь к файлу.

Однако если вы работаете с большими аудиофайлами или нуждаетесь в более сложном управлении воспроизведением, интерфейса AudioClip может оказаться недостаточно, и вам следует рассмотреть возможность использования класса AudioSystem.

Воспроизведение звуков с помощью класса AudioSystem

Аудио система class является частью пакета javax.sound.sampled и предоставляет более продвинутые возможности воспроизведения звука. В следующем примере показано, как воспроизвести аудиофайл с помощью класса AudioSystem:

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();
        }
    }
}

В этом примере мы сначала импортировали необходимые классы и интерфейсы из javax.sound.sampled упаковка. Затем мы создали Аудиовходной поток объект для чтения аудиоданных из файла, и клипы instance для хранения аудиоданных в памяти. После открытия клипа мы вызвали метод start() для воспроизведения звука.

Этот подход обеспечивает больший контроль над воспроизведением звука, включая возможность приостанавливать, возобновлять, зацикливать и останавливать звук, что делает его пригодным для широкого круга приложений.

Подводя итог, мы обсудили два разных подхода к воспроизведению звуков в Java с использованием классов AudioClip и AudioSystem. Интерфейс AudioClip подходит для небольших аудиофайлов в простых приложениях, а класс AudioSystem предлагает расширенные возможности воспроизведения звука для более сложных сценариев. Использование мощных библиотек Java обеспечивает бесперебойную работу со звуком и улучшенное взаимодействие с пользователем в различных приложениях.

Похожие посты: