Diskuze: SoundPlayer více zvuků najednou (C# WPF)
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 15 zpráv z 15.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
ja to resil takhle:
void PlaySound(string soundFile)
{
FileInfo fi = new FileInfo(soundFile);
if (fi.Exists)
using (var player = new System.Media.SoundPlayer(fi.FullName))
{
player.Play();
}
}
ale zalezi na pouziti, pokud ti nevadi nacitat ten zvuk pokazdy znove ze souboru
Jak píše Luboš no, když vytvoříš 2x instanci SoundPlayer, tak se nepřepíšou ty zvuky, ne?
To mi nevadí, ale stejně se mi to stoplo, oba zvuky jsem upravil takhle (jen s jinou cestou):
FileInfo fi = new FileInfo("beep.wav");
if (fi.Exists)
using (var player = new System.Media.SoundPlayer(fi.FullName))
{
player.Play();
}
Vytvářím je oba v jiné metodě a jmenují se taky jinak, stejně se ten spuštěný první vždycky stopne :/
Pár věcí jsem zkoušel, například tohle:
Task.Factory.StartNew(PlaySound1);
Task.Factory.StartNew(PlaySound2);
Stejně se to stoplo
jestli myslíš něco takového:
MediaPlayer mp = new MediaPlayer();
mp.Open(new Uri(@"C:\Users\Erik\Downloads\thank-god-its-friday.wav", UriKind.Absolute));
mp.Play();
Tak to funguje celkem špatně (občas to ten zvuk prostě neudělá, když na pozadí hraje jiný atd.), SoundPlayer funguje mnohem líp, aspoň podle mě, proto ho chci použít
Sorry, MediaElement, ne Player. Četl jsi ten tutoriál?
Mě MediaElement fungoval dobře, i více zvuků zároveň.
SoundPlayer se pro přehrávání více stop současně nedá
použít. S tím si prostě neporadíš. Ani více instancí, ani
vláken ti nepomůže.
SoundPlayer se používá například pro přehrávání zvuků jako jsou
varování, je tak řešený, aby nehrálo víc stop na jednou, ale pouze
poslední načtená.
Použij MediaElement nebo třeba DirectX.AudioVideoPlayback nebo MCI
Nevšiml jsem si, že to je odkaz, mrknu na to
Nějak mi to nefunguje, nemohl bys mi prosím napsat jednoduchý kód pro
přehrání nějakého zvuku?
Tohle nefunguje:
XAML:
<MediaElement Name="mePlayer" Grid.Row="1" LoadedBehavior="Manual" Stretch="None" Source="C:\Users\Erik\Downloads\thank-god-its-friday.wav"/>
CODE BEHIND:
mePlayer.Play();
A taky jsem si všiml, že tam není žádná metoda ve smyslu PlayLooping, to bych musel použít Timer??
Myslím že musíš ještě nastavit mePlayer.Position na 0.
Dále máš k dispozici event, když skončí soundtrak (něco jako MediaEnded),
takže tam bych dal ten loop.
Zobrazeno 15 zpráv z 15.