Comment puis-je lire un fichier audio WAV à partir des ressources de mon projet? Mon projet est une application Windows Forms en C #.
Stream str = Properties.Resources.mySoundFile;
RecordPlayer rp = new RecordPlayer();
rp.Open(new WaveReader(str));
rp.Play();
De Comment lire un fichier audio WAV à partir de ressources en C #.
Puisque mySoundFile
est une Stream
, vous pouvez tirer parti du constructeur surchargé de SoundPlayer
, qui accepte un objet Stream
:
System.IO.Stream str = Properties.Resources.mySoundFile;
System.Media.SoundPlayer snd = new System.Media.SoundPlayer(str);
snd.Play();
a) OK, commencez par ajouter un fichier audio (.wav) à la ressource du projet.
b) Maintenant, écrivez simplement ce code pour lire l'audio.
Dans ce code, je suis en train de jouer de l'audio lors d'un événement de chargement de formulaire.
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();
}
}
}
C'est tout.
Tout est terminé, lancez maintenant le projet (appuyez sur f5) et profitez de votre son.
Bonne chance. :)
Vous devez faire attention à ce que le ramasse-miettes libère la mémoire utilisée par votre son alors que le son est toujours en cours de lecture. Bien que cela arrive rarement, quand cela se produit, vous ne jouerez que de la mémoire aléatoire. Il existe une solution à cela, avec le code source pour réaliser ce que vous voulez ici: http://msdn.Microsoft.com/en-us/library/dd743680(VS.85).aspx
Faites défiler l'écran jusqu'en bas, dans la section "Contenu de la communauté".
Autant que je sache, il existe deux façons de le faire, liste ci-dessous:
Commencez par placer le fichier dans le dossier racine du projet, puis si vous exécutez le programme en mode Debug
ou Release
, vous pourrez accéder au fichier à la fois. Ensuite, utilisez la classe SoundPlayer
pour le comparer.
Mais de cette manière, si vous souhaitez diffuser le projet aux utilisateurs, vous devez copier les fichiers audio avec leurs hiérarchies de dossiers, à l’exception des hiérarchies, dans le dossier "Release" du répertoire "bin".
var basePath = System.AppDomain.CurrentDomain.BaseDirectory;
SoundPlayer player = new SoundPlayer();
player.SoundLocation = Path.Combine(basePath, @"./../../Reminder.wav");
player.Load();
player.Play();
Suivez ci-dessous animer, ajoutez "Fichier existant" au projet.
SoundPlayer player = new SoundPlayer(Properties.Resources.Reminder);
player.Play();
La force de cette voie est:
Seul le dossier "Release" sous le répertoire "bin" doit être copié lors de l'exécution du programme.
Lorsque vous devez ajouter des sons dans votre projet, vous le ferez en lisant le ou les fichiers .wav
. Ensuite, vous devez ajouter le (s) fichier (s) .wav
comme ceci.
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
N'oubliez pas que vous devez écrire le chemin du fichier avec le format barres obliques (/
), n'utilisez pas barres obliques inverses (\
) lorsque vous indiquez un chemin d'accès au fichier, sinon vous obtiendrez une erreur .
Notez également que si vous souhaitez que d’autres événements se produisent pendant la lecture du son, vous pouvez modifier my_wave_file.PlaySync();
avec my_wave_file.PlayAsync();
.
Ces deux lignes peuvent le faire:
SoundPlayer sound = new SoundPlayer(Properties.Resources.solo);
sound.Play();