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
Fórum › .NET
Přehrátí dvou wav souborů zároveň (paralelně)
Musíš použít více vláken, viz seriál tady na Programujte.
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);
}
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.
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
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
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);
}
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...
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.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Jak změnit hlasitost wav souboru v C? — založil Thomasso
Otevření souboru a zároveň uložení textu — založil Amik98
Otevření souboru a zároveň uložení textu — založil Amik98
Načítáni dvou matic z jednoho souboru — založil liaz
PHP vymazání posledních dvou souborů — založil Aricak
Moderátoři diskuze