NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Erik Báča
Člen
Avatar
Erik Báča:17.2.2017 14:25

Ahoj všichni.

Potřeboval bych vědět, jestli jde nějakým způsobem spustit SoundPlayer tak, aby hrály 2 zvuky přes sebe. Standardně je nastavený tak, že se první zvuk vypne a zapne se jen druhý, já bych potřeboval, aby první zůstal hrát. MediaPlayer mi nevyhovuje. Předem díky za odpověď.

Editováno 17.2.2017 14:25
Odpovědět
17.2.2017 14:25
Když mi dáš mínus, napiš proč!
Avatar
Odpovídá na Erik Báča
Luboš Běhounek Satik:17.2.2017 14:36

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

Editováno 17.2.2017 14:37
Nahoru Odpovědět
17.2.2017 14:36
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Luboš Běhounek Satik
Erik Šťastný:17.2.2017 14:48

Jak píše Luboš no, když vytvoříš 2x instanci SoundPlayer, tak se nepřepíšou ty zvuky, ne? :-O

 
Nahoru Odpovědět
17.2.2017 14:48
Avatar
Erik Báča
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
Erik Báča:17.2.2017 14:55

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();
                        }
Nahoru Odpovědět
17.2.2017 14:55
Když mi dáš mínus, napiš proč!
Avatar
Erik Báča
Člen
Avatar
Odpovídá na Erik Šťastný
Erik Báča:17.2.2017 14:58

Vytvářím je oba v jiné metodě a jmenují se taky jinak, stejně se ten spuštěný první vždycky stopne :/

Nahoru Odpovědět
17.2.2017 14:58
Když mi dáš mínus, napiš proč!
Avatar
Odpovídá na Erik Báča
Michal Štěpánek:17.2.2017 17:09

a zkusils je spustit každý v jiném vlákně?

Nahoru Odpovědět
17.2.2017 17:09
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
HONZ4
Člen
Avatar
Odpovídá na Erik Báča
HONZ4:17.2.2017 17:58

musíš použít něco jiného než PlaySound

 
Nahoru Odpovědět
17.2.2017 17:58
Avatar
Odpovídá na Erik Báča
Neaktivní uživatel:17.2.2017 18:03

Prostě použij <MediaPlayer> element.

Nahoru Odpovědět
17.2.2017 18:03
Neaktivní uživatelský účet
Avatar
Erik Báča
Člen
Avatar
Odpovídá na Michal Štěpánek
Erik Báča:17.2.2017 22:16

Pár věcí jsem zkoušel, například tohle:

Task.Factory.StartNew(PlaySound1);
Task.Factory.StartNew(PlaySound2);

Stejně se to stoplo

Nahoru Odpovědět
17.2.2017 22:16
Když mi dáš mínus, napiš proč!
Avatar
Erik Báča
Člen
Avatar
Odpovídá na Neaktivní uživatel
Erik Báča:17.2.2017 22:19

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

Nahoru Odpovědět
17.2.2017 22:19
Když mi dáš mínus, napiš proč!
Avatar
Odpovídá na Erik Báča
Neaktivní uživatel:17.2.2017 22:44

Sorry, MediaElement, ne Player. Četl jsi ten tutoriál?
Mě MediaElement fungoval dobře, i více zvuků zároveň.

Nahoru Odpovědět
17.2.2017 22:44
Neaktivní uživatelský účet
Avatar
HONZ4
Člen
Avatar
Odpovídá na Erik Báča
HONZ4:17.2.2017 22:50

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.Audio­VideoPlayback nebo MCI

Editováno 17.2.2017 22:51
 
Nahoru Odpovědět
17.2.2017 22:50
Avatar
Erik Báča
Člen
Avatar
Odpovídá na Neaktivní uživatel
Erik Báča:17.2.2017 23:00

Nevšiml jsem si, že to je odkaz, mrknu na to

Nahoru Odpovědět
17.2.2017 23:00
Když mi dáš mínus, napiš proč!
Avatar
Erik Báča
Člen
Avatar
Odpovídá na Neaktivní uživatel
Erik Báča:17.2.2017 23:46

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??

Nahoru Odpovědět
17.2.2017 23:46
Když mi dáš mínus, napiš proč!
Avatar
Odpovídá na Erik Báča
Neaktivní uživatel:18.2.2017 20:09

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.

Nahoru Odpovědět
18.2.2017 20:09
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 15 zpráv z 15.