ในบทความนี้ เราจะเจาะลึกการเล่นเสียงใน Java ซึ่งเป็นปัญหาทั่วไปที่นักพัฒนาต้องเผชิญเมื่อสร้างแอปพลิเคชันต่างๆ เช่น เกมและเครื่องเล่นมัลติมีเดีย เราจะหารือเกี่ยวกับวิธีแก้ปัญหาทีละขั้นตอน สำรวจไลบรารีที่จำเป็นสำหรับการทำงานนี้ให้สำเร็จ และให้คำอธิบายเชิงลึกเกี่ยวกับโค้ด Java ซึ่งเป็นที่รู้จักในด้านความอเนกประสงค์และใช้งานง่าย มีไลบรารีที่หลากหลายซึ่งสามารถช่วยนักพัฒนาในการปรับปรุงฟังก์ชันและความสามารถของแอปพลิเคชันของตน หนึ่งในพื้นที่ที่สำคัญดังกล่าวรวมถึงการสนับสนุนเสียงและเสียง
รู้เบื้องต้นเกี่ยวกับ Java Sound API
Java Sound API เป็นชุดเครื่องมืออันทรงพลังที่ออกแบบมาเพื่อให้การสนับสนุนด้านเสียงในทุกแพลตฟอร์ม โดยมาพร้อมกับ Java Development Kit (JDK) และช่วยให้นักพัฒนาสามารถเล่น บันทึก และประมวลผลไฟล์เสียงในรูปแบบต่างๆ ในบทความนี้ เราจะมุ่งเน้นไปที่พื้นฐานของการเล่นเสียงในแอปพลิเคชัน Java โดยใช้คลาส AudioClip และ AudioSystem ซึ่งเป็นส่วนหนึ่งของ Java Sound API
Java Sound API สามารถแบ่งได้เป็นสองแพ็คเกจหลัก: javax.sound.ตัวอย่าง และ javax.sound.midi. แพ็คเกจตัวอย่างใช้เพื่อจัดการฟังก์ชันเสียงพื้นฐาน เช่น การเล่น การบันทึก และการสังเคราะห์ข้อมูลเสียง ในขณะที่แพ็คเกจ midi ได้รับการออกแบบมาสำหรับการจัดการองค์ประกอบเพลงและซาวด์แทร็กที่ใช้ MIDI
เล่นเสียงโดยใช้ AudioClip
เริ่มต้นด้วย เรามาสำรวจวิธีเล่นไฟล์เสียงโดยใช้ คลิปเสียง อินเทอร์เฟซซึ่งเป็นส่วนหนึ่งของ java.applet บรรจุุภัณฑ์. แม้ว่าในตอนแรกอินเทอร์เฟซ 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
รางวัล ระบบเสียง คลาสเป็นส่วนหนึ่งของแพ็คเกจ 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.ตัวอย่าง บรรจุุภัณฑ์. จากนั้นเราได้สร้าง สตรีมอินพุตเสียง คัดค้านการอ่านข้อมูลเสียงจากไฟล์ และ คลิป อินสแตนซ์เพื่อเก็บข้อมูลเสียงไว้ในหน่วยความจำ หลังจากเปิดคลิปแล้ว เราเรียกเมธอด start() เพื่อเล่นเสียง
วิธีการนี้ช่วยให้ควบคุมการเล่นเสียงได้มากขึ้น รวมถึงความสามารถในการหยุดชั่วคราว เล่นต่อ เล่นวน และหยุดเสียง ทำให้เหมาะสำหรับการใช้งานที่หลากหลาย
โดยสรุป เราได้พูดถึงสองแนวทางที่แตกต่างกันในการเล่นเสียงใน Java โดยใช้คลาส AudioClip และ AudioSystem อินเทอร์เฟซ AudioClip เหมาะสำหรับไฟล์เสียงขนาดเล็กในแอปพลิเคชันทั่วไป ในขณะที่คลาส AudioSystem ให้ความสามารถในการเล่นเสียงขั้นสูงสำหรับสถานการณ์ที่ซับซ้อนมากขึ้น การใช้ประโยชน์จากไลบรารีอันทรงพลังของ Java ช่วยให้มั่นใจได้ถึงฟังก์ชันเสียงที่ราบรื่นและประสบการณ์ผู้ใช้ที่ได้รับการปรับปรุงในแอปพลิเคชันต่างๆ