Воспроизведение звука из приложения

У меня есть небольшая 2d игра на C #. Я хочу добавить звук. После просмотра видео на YouTube я набрал следующий код, но он не запущен:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Media;
namespace Test_Sound
{
    public partial class Form1 : Form
    {
        private SoundPlayer sound;
        public Form1()
        {
            sound = new SoundPlayer("3G.wav");
            InitializeComponent();
        }

        private void checkBox_CheckedChanged(object sender, EventArgs e)
        {
            if(checkBox.Checked)
            {
                checkBox.Text = "Stop";
                sound.Play();
            }
            else
            {
                    checkBox.Text = "Play";
                    sound.Stop();   
            }
        }
    }
}

Visual Studio показывает следующую ошибку:

строка: 27 Ошибка 1 «System.Windows.Forms.CheckBox» не содержит определения для «Play», и не может быть найден метод расширения «Play», принимающий первый аргумент типа «System.Windows.Forms.CheckBox» (являются вам не хватает директивы using или ссылки на сборку?) c: \ users \ hp \ documents \ visual studio 2013 \ Projects \ Test_Sound \ Form1.cs

строка 32: Ошибка 2 «System.Windows.Forms.CheckBox» не содержит определения для «Stop», и не может быть найден метод расширения «Stop», принимающий первый аргумент типа «System.Windows.Forms.CheckBox» (являются вам не хватает директивы using или ссылки на сборку?) c: \ users \ hp \ documents \ visual studio 2013 \ Projects \ Test_Sound \ Form1.cs

Может ли кто-нибудь помочь мне исправить мою ошибку?

Ссылка на видео: Воспроизвести звуки в приложении Windows Forms (C # .NET).

Я исправил эту ошибку. Но теперь у меня исключение. Visual Basic показывает следующее сообщение об исключении в строке 27. Сообщение об исключении приведено ниже:

Необработанное исключение типа System.InvalidOperationException произошло в System.dll

Дополнительная информация: Sound API поддерживает только воспроизведение файлов в формате PCM wave. Я скачал из Интернета волновой файл PCM и заменил им существующий. Но это не работает.


person Black Swan    schedule 09.08.2015    source источник
comment
Вы пытались понять сообщение об ошибке? Он очень точен и точно указывает на проблему. Это также косвенно подсказывает, как решить проблему.   -  person keenthinker    schedule 09.08.2015
comment
Вероятно, должно быть: sound.Play() и sound.Stop()   -  person TaW    schedule 09.08.2015
comment
возможный дубликат Как воспроизводить звук в C #, .NET   -  person TaW    schedule 09.08.2015
comment
@Black Swan, см. Мой обновленный ответ   -  person psantos    schedule 09.08.2015


Ответы (1)


Play() и Stop() - это методы sound, которые вы объявили перед Form1()инициализацией.

Ваш код должен быть:

 private void checkBox_CheckedChanged(object sender, EventArgs e)
 {
     if(checkBox.Checked)
     {
         checkBox.Text = "Stop";
         sound.Play();
     }
     else
     {
         checkBox.Text = "Play";
         sound.Stop();
     }
}

См.:
- http://www.dotnetperls.com/soundplayer
- https://msdn.microsoft.com/en-us/library/System.Media.SoundPlayer_methods(v=vs.110).aspx

О вашем новом исключении, PCM (модуляция импульсного кода - https://en.wikipedia.org/wiki/Pulse-code_modulation) - единственный, поддерживаемый классом System.Media.SoundPlayer. Это наиболее распространенный формат WAV, поэтому большинство файлов .WAV просто работают.

Есть несколько инструментов, которые могут конвертировать аудиофайлы. Например, Switch Audio (http://www.nch.com.au/switch/ ) можно конвертировать между форматами (даже в бесплатной версии). Вам нужно будет преобразовать ваш файл в стандартный файл WAV с кодировкой PCM.

person psantos    schedule 09.08.2015