Как воспроизвести аудио файл WAV из ресурсов? - PullRequest
35 голосов
/ 08 ноября 2010

Как я могу воспроизвести аудиофайл WAV из ресурсов моего проекта?Мой проект представляет собой приложение Windows Forms на C #.

Ответы [ 7 ]

45 голосов
/ 08 ноября 2010

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

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

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

42 голосов
/ 17 февраля 2015

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

  1. Откройте «Solution Explorer» на панели инструментов меню («VIEW») или просто нажмите Ctrl + Alt + L.
  2. Нажмите на раскрывающийся список «Свойства».
  3. Затем выберите «Resource.resx» и нажмите ввод.

open project resource

  1. Теперь выберите «Аудио» из списка.

add audio files to resource

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

browsing for audio files

  1. Выберите аудиофайл (-ы) и измените свойства "Persistence" на "Embedded in .resx".

embedding audio files to resource

б) Теперь просто напишите этот код для воспроизведения звука.

В этом коде я играю аудио при загрузке формы.

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) и наслаждайтесь звуком.
Всего наилучшего. :)

6 голосов
/ 02 февраля 2014
  Stream str = Properties.Resources.mySoundFile;
  RecordPlayer rp = new RecordPlayer();
  rp.Open(new WaveReader(str));
  rp.Play();

С Как воспроизвести WAV-аудио файл из ресурсов в C # .

2 голосов
/ 08 ноября 2010

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

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

0 голосов
/ 08 февраля 2019

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

SoundPlayer sound = new SoundPlayer(Properties.Resources.solo);     
                sound.Play(); 
0 голосов
/ 24 января 2019

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

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

Сначала поместите файл в корневую папку проекта, затем, независимо от того, запускаете ли вы программу в режиме Debug или Release, к файлу можно получить доступ точно. Затем используйте класс 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» должна быть скопирована при запуске программы.

0 голосов
/ 05 марта 2014

Когда вам нужно добавить звуки в ваш проект, вы сделаете это, проиграв .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();.

...