NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
doMík
Člen
Avatar
doMík:31.3.2016 23:35

Zdravím :)
Mohl by mi někdo osvětlit čím by to moho být? Používám klasický System.Media.Sou­ndPlayer. Pokud zahajuji přehrávání pomocí .play() funguje to naprosto spolehlivě pokud zahajuji pomocí .playloop() přehrávání se spustí jen občas. Nevíte někdo co to je, případně jak zvýšit spolehlivost?
{kód doplním později (jsem na telefonu )}

 
Odpovědět
31.3.2016 23:35
Avatar
doMík
Člen
Avatar
doMík:1.4.2016 11:36
//ú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;
        }
}
 
Nahoru Odpovědět
1.4.2016 11:36
Avatar
VitekST
Člen
Avatar
Odpovídá na doMík
VitekST:8.4.2016 20:54

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

 
Nahoru Odpovědět
8.4.2016 20:54
Avatar
doMík
Člen
Avatar
doMík:11.4.2016 15:28

NAudio tam používám vedle, ale v tom sem nenašel přehrávání ve smičce a vzhledem k požadované jednoduchosti aplikace sem nechtěl tu knihovnu předělávat.

 
Nahoru Odpovědět
11.4.2016 15:28
Avatar
VitekST
Člen
Avatar
Odpovídá na doMík
VitekST:11.4.2016 17:37

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í.

Editováno 11.4.2016 17:40
 
Nahoru Odpovědět
11.4.2016 17:37
Avatar
ORRNY99
Člen
Avatar
ORRNY99:11.4.2016 20:12

Nebo se koukni na Bass.Net

jednoduchý příklad použití https://github.com/ukgamer/Player

 
Nahoru Odpovědět
11.4.2016 20:12
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 6 zpráv z 6.