Diskuze: nespolehlivý SoundPlayer?
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 6 zpráv z 6.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


//úsek třídy přehravače | SNDplayer
static bool BGPlay = true;
static System.Media.SoundPlayer backgroundPlayer;
public static void SetBacgroundMusic(string location)
{
try {
backgroundPlayer = new System.Media.SoundPlayer(location);
}
catch { error (); }
}
public static bool PlayBackgroundMusic
{
get { return BGPlay; }
set
{
try {
BGPlay = value;
if(value == true)
backgroundPlayer.Play(); //Tady potřebuju Playlooping()
else
backgroundPlayer.Stop();
}
catch{ error (); }
}
}
Volané je to takto
//Form2
private void button8_Click(object sender, EventArgs e)
{
SNDplayer.PlayFX ("paing.wav");
if(SNDplayer.PlayBackgroundMusic)
{
label4.Visible = false;
SNDplayer.PlayBackgroundMusic = false;
}
else
{
label4.Visible = true;
SNDplayer.PlayBackgroundMusic = true;
}
}
Zdá se, že je to bug API samotného.
Být na tvém místě bych se asi na SoundPlayer integrovaný ve frameworku vykašlal, a použil komplexnější knihovnu pro audio, buďto CSCore, nebo NAudio.
Samozřejmě jestli ti to do aplikace nepřidá až moc velkej footprint.
Obojí knihovny ti dokonce umožňují přehrát zvuk z kama chceš, můžeš
si třeba takový WAV soubor strčit do Resources a zakompilovat do
aplikace.
Možností je spousta.
Příklady:
CSCore: http://cscore.codeplex.com/wikipage?…
NAudio: http://mark-dot-net.blogspot.cz/…ck-with.html
No, nevím cos dělal, ale mě stačilo pár minut Googlování.
http://mark-dot-net.blogspot.cz/…-naudio.html
Je tam popisována implementace třídy LoopStream (odvozená od WaveStream), která poskytuje zdroj dat, který se po skončení opakuje (výchozí proud se přetočí na začátek a čte se od začátku).
Do konstruktoru předáš WaveFileReader, vytvořený konstruktorem přijímajíc tvůj datový proud (soubor, zdroj z aplikace, HTTP, ..., za předpokladu, že se jedná o WAV, v případě MP3 použij Mp3FileReader).
Jestliže máš soubor, cestu souboru tam můžeš dát rovnou.
Vytvoříš si výstup, inicializuješ ho instancí třídy LoopStream, spustíš přehrávání a bum, jede to dokola.
Alternativní řešení: Mohl bys sice čekat každých X sekund na zastavení přehrávání, a následně ho pustit znova, ale nepřijde mi to jako vhodné řešení.
Nebo se koukni na Bass.Net
jednoduchý příklad použití https://github.com/ukgamer/Player
Zobrazeno 6 zpráv z 6.