Přehrátí dvou wav souborů zároveň (paralelně) – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Přehrátí dvou wav souborů zároveň (paralelně) – .NET – Fórum – Programujte.comPřehrátí dvou wav souborů zároveň (paralelně) – .NET – Fórum – Programujte.com

 

Honza
~ Anonymní uživatel
451 příspěvků
22. 5. 2010   #1
-
0
-

Ahoj
nevíte prosím jak spustit v C# dva soubory wave zaroveň? Paralelně... Vždy když mi jeden zvuk běží, a dám spustit druhý, tak se ten původní ukončí a spustí jen ten druhý.

díky

Nahlásit jako SPAM
IP: 217.197.151.–
Chrasty
~ Redaktor
+4
Posthunter
22. 5. 2010   #2
-
0
-

Musíš použít více vláken, viz seriál tady na Programujte.

Nahlásit jako SPAM
IP: 193.179.196.–
zdarovka
~ Anonymní uživatel
1 příspěvek
22. 5. 2010   #3
-
0
-



using System.Runtime.InteropServices;

private byte[] sound = File.ReadAllBytes("tada.wav");


[DllImport("winmm.dll")]
private static extern bool PlaySound(byte[] memory, int module, int flags);

const int SND_SYNC = 0x0000;
const int SND_ASYNC = 0x0001;
const int SND_NODEFAULT = 0x0002;
const int SND_MEMORY = 0x0004;
const int SND_LOOP = 0x0000;
const int SND_NOSTOP = 0x0010;
const int SND_NOWAIT = 0x00002000;
const int SND_FILENAME = 0x00020000;
const int SND_RESOURCE = 0x00040004;
const int SND_PURGE = 0x0040;
const int SND_APPLICATION = 0x0080;

/// <summary>
/// asynchroni prehrani zvuku
/// </summary>
private void play()
{
PlaySound(sound, 0, SND_MEMORY | SND_ASYNC | SND_LOOP);
}

Nahlásit jako SPAM
IP: 83.208.238.–
Honza
~ Anonymní uživatel
451 příspěvků
22. 5. 2010   #4
-
0
-

To Chrasty: ale kdyz nemam vicejadrovy procesor tak ty vlakna nepobezi zaraz ne?

to zdarovka: vyzkousim

Nahlásit jako SPAM
IP: 217.197.151.–
beachboy0
Návštěvník
22. 5. 2010   #5
-
0
-

ted sem se registroval takze zdarovka sem ja.....ale myslim ze to funguje jenom na wav soubory

Nahlásit jako SPAM
IP: 83.208.238.–
Honza
~ Anonymní uživatel
451 příspěvků
22. 5. 2010   #6
-
0
-

OK a z kama ci cerpal? ja nevidm presne kam mam umistit o kodu ty definice konstant, jestli primo do tridy nebo jinde?

Nahlásit jako SPAM
IP: 217.197.151.–
beachboy0
Návštěvník
22. 5. 2010   #7
-
0
-

ja to mel primo v kodu mezi metodamy, tak jak to vidis

Nahlásit jako SPAM
IP: 83.208.238.–
Honza
~ Anonymní uživatel
451 příspěvků
22. 5. 2010   #8
-
0
-

Tak jsem to zkusil jak si mi rikal,
pridefinoval jsem i druhy soubor



private byte[] sound = File.ReadAllBytes(@"C:\Users\Honza\Desktop\mujSong.wav");
private byte[] sound2 = File.ReadAllBytes(@"C:\Users\Honza\Desktop\Track6.wav");

...

public Form1()
{
InitializeComponent();
play();
play2();
}

private void play()
{
PlaySound(sound, 0, SND_MEMORY | SND_ASYNC | SND_LOOP);
}

private void play2()
{
PlaySound(sound2, 0, SND_MEMORY | SND_ASYNC | SND_LOOP);
}


a spusti se vzdycky az ten soubor wav sound2.

Nahlásit jako SPAM
IP: 217.197.151.–
beachboy0
Návštěvník
22. 5. 2010   #9
-
0
-

zkus ty dve metody sloucit do jedne melo by to fungovat

Nahlásit jako SPAM
IP: 83.208.238.–
Honza
~ Anonymní uživatel
451 příspěvků
22. 5. 2010   #10
-
0
-



public Form1()
{
InitializeComponent();
play();
}

private void play()
{
PlaySound(sound, 0, SND_MEMORY | SND_ASYNC | SND_LOOP);
PlaySound(sound2, 0, SND_MEMORY | SND_ASYNC | SND_LOOP);
}


myslís takto? to uz jsem zkusil a porad nejde... spusti se az sound2

Nahlásit jako SPAM
IP: 217.197.151.–
beachboy0
Návštěvník
22. 5. 2010   #11
-
0
-

tak ted uz taky nevim...todle jsem nevymejslel, to nam ucitel akorat ukazoval jak si pridat zvuk do nasich praci.....sam sem to nevymyslel, ale kazdopadne by to melo jit tim multithreadingem, vice jadrovy procesor na to nepotrebujes jak si se ptal
kdyz si pridas



using System.Threading;

tak pak uz nak snad vytvoris dalsi vlakna

Nahlásit jako SPAM
IP: 83.208.238.–
marpit0
Stálý člen
22. 5. 2010   #12
-
0
-

Zkus to s těmi vlákny, mělo by to fungovat.



public Form1()
{
InitializeComponent();
Thread u = new Thread(new ThreadStart(play));
Thread v = new Thread(new ThreadStart(play2));
u.start();
v.start();
}

private void play()
{
PlaySound(sound, 0, SND_MEMORY | SND_ASYNC | SND_LOOP);
}

private void play2()
{
PlaySound(sound2, 0, SND_MEMORY | SND_ASYNC | SND_LOOP);
}

Nahlásit jako SPAM
IP: 94.113.182.–
MarPit
Honza
~ Anonymní uživatel
451 příspěvků
22. 5. 2010   #13
-
0
-



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
using System.Threading;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private byte[] sound = File.ReadAllBytes(@"C:\Users\Honza\Desktop\mujSong.wav");
private byte[] sound2 = File.ReadAllBytes(@"C:\Users\Honza\Desktop\Track6.wav");
[DllImport("winmm.dll")]
private static extern bool PlaySound(byte[] memory, int module, int flags);

const int SND_SYNC = 0x0000;
const int SND_ASYNC = 0x0001;
const int SND_NODEFAULT = 0x0002;
const int SND_MEMORY = 0x0004;
const int SND_LOOP = 0x0000;
const int SND_NOSTOP = 0x0010;
const int SND_NOWAIT = 0x00002000;
const int SND_FILENAME = 0x00020000;
const int SND_RESOURCE = 0x00040004;
const int SND_PURGE = 0x0040;
const int SND_APPLICATION = 0x0080;

public Form1()
{
InitializeComponent();
Thread u = new Thread(new ThreadStart(play));
Thread v = new Thread(new ThreadStart(play2));
u.Start();
v.Start();
}

private void play()
{
PlaySound(sound, 0, SND_MEMORY | SND_ASYNC | SND_LOOP);
}

private void play2()
{
PlaySound(sound2, 0, SND_MEMORY | SND_ASYNC | SND_LOOP);
}

}
}


Tak nevim, porad se spusti az ten sound2. A v souboru 1 chyba neni to uz jsem zkousel...

Nahlásit jako SPAM
IP: 217.197.151.–
marpit0
Stálý člen
22. 5. 2010   #14
-
0
-

To Honza : Tak to nevím, zkuste ty soubory prohodit...

Nahlásit jako SPAM
IP: 94.113.182.–
MarPit
Honza
~ Anonymní uživatel
451 příspěvků
23. 5. 2010   #15
-
0
-

Tak abych tu pridal i nejake vysledky...

Tak jsem to vyresil zpusobem, ze jsem projekt vytvoril ve WPF, vlozil zvukove stopy jako mediaelement a ty pak muzu jednotuse spustit pomoci "xxx.play"

takze diky Vam kteri jste se mi snazili pomoct.

Nahlásit jako SPAM
IP: 217.197.151.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 25 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý