Подтвердить что ты не робот

Как воспроизвести аудиофайл WAV из ресурсов?

Как я могу воспроизвести аудиофайл WAV из моего проекта "Ресурсы"? Мой проект - это приложение Windows Forms на С#.

4b9b3361

Ответ 2

Поскольку mySoundFile - это Stream, вы можете воспользоваться перегруженным конструктором SoundPlayer, который принимает объект Stream:

System.IO.Stream str = Properties.Resources.mySoundFile;
System.Media.SoundPlayer snd = new System.Media.SoundPlayer(str);
snd.Play();

Документация по классу SoundPlayer (MSDN)

Ответ 3

a) ОК, сначала добавьте аудиофайл (.wav) в ресурс проекта.

  • Откройте "Обозреватель решений" на панели инструментов меню ( "VIEW" ) или просто нажмите Ctrl + Alt + L.
  • Нажмите на раскрывающийся список "Свойства".
  • Затем выберите "Resource.resx" и нажмите "Enter".

open project resource

  1. Теперь выберите "Audio" из списка combobox.

add audio files to resource

  1. Затем нажмите "Добавить ресурс", выберите аудиофайлы (.wav) и нажмите "Открыть".

browsing for audio files

  1. Выберите аудиофайлы и измените свойства "Стойкость" на "Встраиваемые в .resx".

embedding audio files to resource

b) Теперь просто напишите этот код, чтобы воспроизвести аудио.

В этом коде я воспроизвожу аудио в событии загрузки формы.

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; // at first you've to import this package to access SoundPlayer

namespace WindowsFormsApplication1
{
    public partial class login : Form
    {
        public login()
        {
            InitializeComponent();
        }

        private void login_Load(object sender, EventArgs e)
        {
            playaudio(); // calling the function
        }

        private void playaudio() // defining the function
        {
            SoundPlayer audio = new SoundPlayer(WindowsFormsApplication1.Properties.Resources.Connect); // here WindowsFormsApplication1 is the namespace and Connect is the audio file name
            audio.Play();
        }
    }
}

Что это.
Все сделано, теперь запустите проект (нажмите f5) и наслаждайтесь своим звуком.
Всего наилучшего.:)

Ответ 4

Вам нужно быть осторожным в сборщике мусора, освобождающем память, используемую вашим звуком, пока звук все еще играет. Хотя это редко случается, когда это происходит, вы просто будете играть в случайную память. Существует решение этого, в комплекте с исходным кодом для достижения того, что вы хотите здесь: http://msdn.microsoft.com/en-us/library/dd743680(VS.85).aspx

Прокрутите до самого нижнего уровня в разделе "Содержимое сообщества".

Ответ 5

Когда вам нужно добавить звуки в свой проект, вы сделаете это, играя .wav файл (ы). Затем вы должны добавить файлы .wav, как это.

   using System.Media; //write this at the top of the code

   SoundPlayer my_wave_file = new SoundPlayer("F:/SOund wave file/airplanefly.wav");
   my_wave_file.PlaySync(); // PlaySync means that once sound start then no other activity if form will occur untill sound goes to finish

Помните, что вам нужно написать путь к файлу с форматом с прямыми косичками (/), не используйте обратные косые черты (\), когда давая путь к файлу, иначе вы получите сообщение об ошибке.

Также обратите внимание: если вы хотите, чтобы во время воспроизведения звука происходили другие вещи, вы можете изменить my_wave_file.PlaySync(); на my_wave_file.PlayAsync();.

Ответ 6

Есть два способа сделать это, насколько я знаю, список ниже:

  1. Использовать путь к файлу

Сначала поместите файл в корневую папку проекта, затем, независимо от того, запускаете ли вы программу в режиме Debug или Release, к файлу можно получить доступ точно. Затем используйте класс SoundPlayer чтобы SoundPlayer его.
Но таким образом, если вы хотите опубликовать проект для пользователей, вам необходимо скопировать звуковые файлы с иерархиями папок, за исключением иерархий, в папку "Release" в каталоге "bin".

        var basePath = System.AppDomain.CurrentDomain.BaseDirectory;
        SoundPlayer player = new SoundPlayer();
        player.SoundLocation = Path.Combine(basePath, @"./../../Reminder.wav");
        player.Load();
        player.Play();
  1. Использовать ресурс

Следуйте анимации ниже, добавьте "Exsiting file" в проект.

enter image description here

        SoundPlayer player = new SoundPlayer(Properties.Resources.Reminder);
        player.Play();

Сила этого способа:
Только папка "Release" в каталоге "bin" должна быть скопирована при запуске программы.

Ответ 7

Эти две строки могут сделать это:

SoundPlayer sound = new SoundPlayer(Properties.Resources.solo);     
                sound.Play();