Sound capture v C#   otázka

C#

Vážení fóraři, neví někdo z Vás jak zachytávat zvuk z přímo playbacku a nikoli z mikrofonu? Do teď jsem používal knihovnu NAudio... Budu rád za každý názor, stačí mi základní nasměrování, nejlépe bych uvítal několik tipů na určitou knihovnu se stručným zhodnocením... Předem díky, Michal

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Není potřeba žádná knihovna třetích stran, stačí DirectSound. Práce s ním je ale poněkud složitější.

Jinak jediné zvukové API srovnatelné s DirectSound je multiplatformní FMOD, pro nekomerční použití zdarma.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Framework DirectX 9 znám, nicméně ve VS2010, .NET4 a Win7 již nevidím ani Microsoft.DirectX reference, tudíž jsem usoudil, že se jedná o zapadlou technologii. Je tomu tak? Na FMOD se podívám...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak zapadlá technologie to není ani omylem. Jen to Managed rozhraní se tam objeví po instalaci nejnovějšího redistributable od DirectX.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nakonec jsem to udělal pomocí SlimDX knihovny, ale dosáhl jsem stejného výsledku jako s komponentou NAudio, jen je kód velmi dlouhý... Klíčové je ale to, že opět nelze zachytávat playback, pokud na to zvukový driver nevytvoří další virtuální zařízení. To co já potřebuji je knihovna, přes kterou můžu ukládat "reproduktorový" (výstupní) stream. Nevíte o něčem v tomto směru? Díval jsem se i na WinAPI, ale z toho jsem nic nerozchodil, pokud někdo máte i funkční sample pro .NET4, postněte ho, prosím, sem. Michal

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jak už jsem psal tak to jde pomocí DirectSound. Žádné virtuální zařízení není potřeba vytvářet, vstup se bere ze zařízení, které se obvykle jmenuje Směšovač stereo a je to přesně to, co se pouští do reproduktorů. Vybral jste si poměrně složitou věc tak nečekejte, že u něčeho zavoláte dvě metody a tím to bude vyřešené.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
            DeviceCollection a = SlimDX.DirectSound.DirectSoundCapture.GetDevices();

            for (int i = 0; i < a.Count; i++)
            {
                System.Diagnostics.Debug.WriteLine(i.ToString() + ": " + a[i].Description);
                Console.WriteLine(i.ToString() + ": " + a[i].Description);
            }

0: Primary Sound Capture Driver

1: "What U Hear" (2- Creative SB X-Fi)

Výpis nalezených zařízení, stereo mix jsem nikde nenašel, můžete mě prosím nasměrovat na Vámi uváděný směšovač? Stream a všechno ostatní mi běží jak má, jen z toho zařízení kreté nepotřebuji.

PS: Ten Primary Sound Capture Driver mix není, je to primární zvukové zařízení a pokud mám v PC jen jedno, je to právě to "What U Hear" (2- Creative SB X-Fi).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokiaľ viem dobre, tak to, čo sa púšťa do reproduktorov je dostupné práve cez "What U Hear".Jediný problém môže byť v tom, že ak máte dve zvukové karty(alebo jednu a druhú integrovanú na matičnej doske), tak asi bude treba odchytávať What U Hear tej zvukovky, cez ktorú je prehrávané to, čo chcete odchytiť.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak už jsem se radoval, ale stejně jsem to nevyřešil. S tím What you hear máte pravdu, jen mi to s tím předtím nešlo, protože toho zařízení bylo ztlumené. To samé jsem testnul na laptopu a uvedený device tam bohužel není, na netu jsem se dočetl že výše popsané zařízení se vyskytuje za základě vůle výrobce driveru. Takže jsem vlastně opět na začátku, co požaduji je zachytávat zvuk z line-out, respektivě z playbacku PC - kdo něco podobného řešil, napiště to sem prosím, kdo ne a má tušení, postněte to sem taky a zkusím to, každopádně, jak se zdá, nebude to sranda. DirectX Audio jako takový je otázká pár desetiminut, ale tohle... Prostě spoléhám na Vás, VebNetaře :) Michal

PS: Ukázku beru v jakémkoliv jazyce ze skupiny .NET

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Nikdo nic? Jedná se sice o soukromou aplikaci, ale výše uvedená funkce je poměrně klíčová a rád bych vše dotáhl do konce bez spojování line-out s line-in kabelem. ;-) Michal

nahlásit spamnahlásit spam 0 odpovědětodpovědět

pro inspiraci tuším, že tohle pomůže..

http://blogs.msdn.com/b/matthew_van_eerd...

jinak s DirectSound..

http://khason.net/blog/capturing-and-str...

snad to pomůže

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback