Как я могу воспроизвести аудиофайл WAV из моего проекта "Ресурсы"? Мой проект - это приложение Windows Forms на С#.
Как воспроизвести аудиофайл WAV из ресурсов?
Ответ 1
Stream str = Properties.Resources.mySoundFile;
RecordPlayer rp = new RecordPlayer();
rp.Open(new WaveReader(str));
rp.Play();
Ответ 2
Поскольку mySoundFile
- это Stream
, вы можете воспользоваться перегруженным конструктором SoundPlayer
, который принимает объект Stream
:
System.IO.Stream str = Properties.Resources.mySoundFile;
System.Media.SoundPlayer snd = new System.Media.SoundPlayer(str);
snd.Play();
Ответ 3
a) ОК, сначала добавьте аудиофайл (.wav) в ресурс проекта.
- Откройте "Обозреватель решений" на панели инструментов меню ( "VIEW" ) или просто нажмите Ctrl + Alt + L.
- Нажмите на раскрывающийся список "Свойства".
- Затем выберите "Resource.resx" и нажмите "Enter".
- Теперь выберите "Audio" из списка combobox.
- Затем нажмите "Добавить ресурс", выберите аудиофайлы (.wav) и нажмите "Открыть".
- Выберите аудиофайлы и измените свойства "Стойкость" на "Встраиваемые в .resx".
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
Есть два способа сделать это, насколько я знаю, список ниже:
- Использовать путь к файлу
Сначала поместите файл в корневую папку проекта, затем, независимо от того, запускаете ли вы программу в режиме 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();
- Использовать ресурс
Следуйте анимации ниже, добавьте "Exsiting file" в проект.
SoundPlayer player = new SoundPlayer(Properties.Resources.Reminder);
player.Play();
Сила этого способа:
Только папка "Release" в каталоге "bin" должна быть скопирована при запуске программы.
Ответ 7
Эти две строки могут сделать это:
SoundPlayer sound = new SoundPlayer(Properties.Resources.solo);
sound.Play();