วิธีเล่นเสียงใน C #, .NET


คำตอบ:


234

คุณสามารถใช้:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"c:\mywavfile.wav");
player.Play();

33
นี่เป็นคำตอบที่สมบูรณ์แบบเพราะผู้ใช้ใหม่สามารถเข้าใจได้ว่า SoundPlayer เป็นของ System.Media ....
Khilen Maniyar

31
@Ali ... stackoverflow.com/questions/2361857/what-does-means-in-c-sharp "หมายความว่าแปลสตริงต่อไปนี้เป็นตัวอักษรความหมาย \ ในสตริงจะเป็น" \ "ใน เอาท์พุทแทนที่จะต้องใส่ "\\" เพื่อหมายถึงอักขระตามตัวอักษร "
Praveen

คำตอบของ @ Praveen ให้ข้อมูลอีกอย่างหนึ่ง ขอบคุณ Dexter ที่ขอสัญลักษณ์ "@" นั้น
Allen Linatoc

2
@bporter ดูเหมือนจะใช้ไม่ได้กับไฟล์ mp3 จำกัด เฉพาะรูปแบบ wav เท่านั้น
Najeeb

API นี้น่าเสียดายจริงๆ! ไม่เล่นไฟล์ MP3 หรือ MIDI ไร้ประโยชน์สำหรับฉันโดยสิ้นเชิง Windows มีการรองรับ MP3 และ MIDI ตั้งแต่อย่างน้อย Windows XP อัปยศใน Microsoft!
Elmue

91

คุณสามารถใช้SystemSoundตัวอย่างเช่นSystem.Media.SystemSounds.Asterisk.Play();.


มีประโยชน์มาก. สามารถช่วยในการใช้ค่าเริ่มต้นของระบบ
Babak.Abad

4
สิ่งสำคัญคือต้องทราบว่าหากคุณปิดเสียงของระบบในการตั้งค่า Windows (อย่างน้อย Windows ที่ใหม่กว่า) จะไม่เล่นอะไรเลย
Artholl

32

สำหรับ Windows Forms วิธีหนึ่งคือการใช้ไฟล์ SoundPlayer

private void Button_Click(object sender, EventArgs e)
{
    using (var soundPlayer = new SoundPlayer(@"c:\Windows\Media\chimes.wav")) {
        soundPlayer.Play(); // can also use soundPlayer.PlaySync()
    }
}

หน้า MSDN

สิ่งนี้จะใช้ได้กับ WPF เช่นกัน แต่คุณมีตัวเลือกอื่น ๆ เช่นใช้MediaPlayer MSDN page


1
ยิ่งไปกว่านั้นในรหัสการผลิตให้สร้างเพียงครั้งเดียวและใช้หลายครั้งแทนที่จะสร้างทุกครั้งที่กดปุ่ม
Shibumi

ฉันเปลี่ยนชื่อฟังก์ชั่นButtonClickนั้นเป็นเพียงเพราะดูเหมือนว่าจะเป็นไปตามสไตล์การตั้งชื่อ C # มากกว่า
Ethan Bierlein

1
@EthanBierlein - อาจเป็นหลักการตั้งชื่อเมื่อฉันโพสต์คำตอบ;)
ChrisF

1
ฮะ. นั่นคือการประชุมสมัยก่อน?
Ethan Bierlein

@EthanBierlein ยังคงเป็นสิ่งที่สร้างขึ้นโดยอัตโนมัติโดยโครงการแบบฟอร์ม Windows ของ Visual Studio
JAD

13

ข้อมูลเพิ่มเติม.

นี่เป็นคำตอบระดับสูงสำหรับแอปพลิเคชันที่ต้องการให้เข้ากับสภาพแวดล้อม Windows ได้อย่างราบรื่น รายละเอียดทางเทคนิคของการเล่นเสียงเฉพาะมีอยู่ในคำตอบอื่น ๆ นอกจากนั้นโปรดสังเกตสองประเด็นนี้เสมอ:

  1. ใช้เสียงระบบมาตรฐานห้าเสียงในสถานการณ์ทั่วไปเช่น

    • เครื่องหมายดอกจัน - เล่นเมื่อคุณต้องการเน้นเหตุการณ์ปัจจุบัน

    • คำถาม - เล่นกับคำถาม (หน้าต่างกล่องข้อความระบบเล่นอันนี้)

    • อัศเจรีย์ - เล่นด้วยไอคอน excalamation (หน้าต่างกล่องข้อความระบบเล่นอันนี้)

    • เสียงเตือน (เสียงระบบเริ่มต้น)

    • หยุดวิกฤต ("มือ") - เล่นโดยมีข้อผิดพลาด (หน้าต่างกล่องข้อความระบบเล่นอันนี้)
       

    วิธีการเรียนSystem.Media.SystemSoundsจะเล่นให้คุณ
     

  2. ใช้เสียงอื่น ๆ ตามที่ผู้ใช้ของคุณปรับแต่งได้ในแผงควบคุมเสียง

    • วิธีนี้ผู้ใช้สามารถเปลี่ยนหรือลบเสียงออกจากแอปพลิเคชันของคุณได้อย่างง่ายดายและคุณไม่จำเป็นต้องเขียนอินเทอร์เฟซผู้ใช้ใด ๆ สำหรับสิ่งนี้เพราะมีอยู่แล้ว
    • โปรไฟล์ผู้ใช้แต่ละรายสามารถลบล้างเสียงเหล่านี้ได้ในแบบของตัวเอง
    • ทำอย่างไร:
      • สร้างโปรไฟล์เสียงของแอปพลิเคชันของคุณใน Windows Registry (คำแนะนำ: ไม่จำเป็นต้องเขียนโปรแกรมเพียงเพิ่มคีย์ลงในโปรแกรมติดตั้งแอปพลิเคชันของคุณ)
      • ในแอปพลิเคชันของคุณอ่านเส้นทางไฟล์เสียงหรือทรัพยากร DLL จากรีจิสตรีคีย์ของคุณและเล่น (วิธีเล่นเสียงคุณสามารถดูได้ในคำตอบอื่น ๆ )

ขอบคุณสำหรับข้อมูลเพิ่มเติมนี้ ฉันต้องการที่จะเพิ่มตัวอย่าง: System.Media.SystemSounds.Hand.Play(); Thread.Sleep(2000);เล่นเสียงมือ โปรดทราบว่ามันเล่นแบบอะซิงโครนัสที่นี่ฉันได้เพิ่มคำสั่ง sleep เพื่อรอให้เสียงเสร็จสิ้น หากคุณไม่รอและเล่นเสียงอื่นเสียงก่อนหน้าจะหยุดทันที
Matt


2

ในการเล่นไฟล์เสียงในรูปแบบ Windows โดยใช้ C # ลองตรวจสอบตัวอย่างง่ายๆดังนี้:

1. ไปที่ Visual Studio (VS-2008/2010/2012) -> เมนูไฟล์ -> คลิกโครงการใหม่

2. ใน New Project -> คลิก Windows Forms Application -> Give Name จากนั้นคลิก OK

โครงการ "Windows Forms" ใหม่จะเปิดขึ้น

3. ลากและวางปุ่มควบคุมจากกล่องเครื่องมือไปยังแบบฟอร์ม Windows

4. ดับเบิลคลิกที่ปุ่มเพื่อสร้างตัวจัดการเหตุการณ์คลิกเริ่มต้นโดยอัตโนมัติและเพิ่มรหัสต่อไปนี้

รหัสนี้จะแสดงกล่องโต้ตอบเปิดไฟล์และส่งผลลัพธ์ไปยังเมธอดชื่อ "playSound" ที่คุณจะสร้างในขั้นตอนถัดไป

 OpenFileDialog dialog = new OpenFileDialog();
 dialog.Filter = "Audio Files (.wav)|*.wav";


if(dialog.ShowDialog() == DialogResult.OK)
{
  string path = dialog.FileName;
  playSound(path);
}

5. เพิ่มรหัสวิธีการต่อไปนี้ใต้ตัวจัดการเหตุการณ์ button1_Click

 private void playSound(string path)
 {
   System.Media.SoundPlayer player = new System.Media.SoundPlayer();
   player.SoundLocation = path;
   player.Load();
   player.Play();
 }

6. ตอนนี้ให้เรียกใช้แอปพลิเคชันเพียงแค่กด F5 เพื่อเรียกใช้รหัส

7. คลิกปุ่มและเลือกไฟล์เสียง หลังจากโหลดไฟล์แล้วเสียงจะเล่น

หวังว่านี่จะเป็นตัวอย่างที่มีประโยชน์สำหรับผู้เริ่มต้น ...


1

ฉันคิดว่าคุณต้องเพิ่มไฟล์. wav ในทรัพยากรก่อน ตัวอย่างเช่นคุณมีไฟล์เสียงชื่อ Sound.wav หลังจากที่คุณเพิ่มไฟล์ Sound.wav ลงในทรัพยากรคุณสามารถใช้รหัสนี้:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(Properties.Resources.Sound);
player.Play();

นี่เป็นอีกวิธีหนึ่งในการเล่นเสียง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.