Čtení multikanálového zvuku
[Funkce přidružená k této stránce, Windows Media Format 11 SDK, je starší funkce. Byla nahrazena čtečkou zdroje a zapisovače jímky. Zdrojový čtečka a jímkový zapisovač jsou optimalizované pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal čtečka zdrojů a zapisovač výstupu místo Windows Media Format 11 SDK, pokud je to možné. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]
Kodek Windows Media Audio 9 Professional může kódovat vícekanálový zvuk (více než dva kanály). Při čtení souboru s vícekanálovým zvukem je nutné správně nakonfigurovat výstup nebo se zvuk doručí s nižší kvalitou a stereo. Pokud chcete nastavit výstup pro přenos vícekanálového zvuku, musíte konfigurovat dvě nastavení výstupu: g_wszEnableDiscreteOutput a g_wszSpeakerConfig.
Nastavení g_wszEnableDiscreteOutput na TRUE nastaví kodek tak, aby doručil výstup zvuku s vysokým rozlišením. Zvuk s vysokým rozlišením je kódován kodekem Windows Media Audio 9 s 24bitovými vzorky ve stereofonním nebo více kanálech. Pokud je toto nastavení FALSE, doručí se pouze 16bitový stereo výstup.
Počet reproduktorů na přehrávaném počítači je nastavený s g_wszSpeakerConfig. Toto nastavení je hodnota DWORD nastavená na jednu z konstant pro reproduktory DirectSound uvedených v následující tabulce. Pokud chcete tyto názvy konstant pro kompilátor přeložit, musíte zahrnout dsound.h.
Konstanta | Hodnota | Popis |
---|---|---|
DSSPEAKER_DIRECTOUT | 0x00000000 | Zvuk se předává přímo bez konfigurace reproduktorů. |
DSSPEAKER_HEADPHONE | 0x00000001 | Klientský počítač je vybaven sluchátky. |
DSSPEAKER_MONO | 0x00000002 | Klientský počítač je vybaven monauralním reproduktorem. |
DSSPEAKER_QUAD | 0x00000003 | Klientský počítač je vybaven kvadraphonickými reproduktory. |
DSSPEAKER_STEREO | 0x00000004 | Klientský počítač je vybaven stereofonními reproduktory. |
DSSPEAKER_SURROUND | 0x00000005 | Klientský počítač je vybaven čtyřkanálovými reproduktory s prostorovým zvukem. |
DSSPEAKER_5POINT1 | 0x00000006 | Klientský počítač je vybaven pěti reproduktory a subwooferem. |
DSSPEAKER_7POINT1 | 0x00000007 | Klientský počítač je vybaven sedmi reproduktory a subwoofer. |
K nastavení těchto nastavení použijte IWMReaderAdvanced2::SetOutputSetting.
A konečně, aby byly kanály vyvedeny samostatně, bez převedení na stereo, musíte nastavit správný typ média na výstupu podle těchto kroků:
- Zavolejte IWMReader::GetOutputFormatCount, abyste získali počet podporovaných formátů pro příslušný zvukový výstup. Indexy výstupního formátu jsou založené na nule.
- Pro každý podporovaný formát zavolejte IWMReader::GetOutputFormat pro získání rozhraní IWMOutputMediaProps na objektu vlastností výstupního média.
- Zavolejte IWMMediaProps::GetMediaType pro zjištění typu média.
- Pokud je načtený typ média požadovaným typem multichannel, nastavte ho voláním IWMReader::SetOutputProps.
Po nastavení diskrétního výstupu a konfigurace reproduktoru by měly výstupní formáty uvedené čtenářem obsahovat vícekanálové formáty, které používají WAVEFORMATEXTENSIBLE strukturu. Pokud před nastavením vlastností vypíšete výstupní formáty, budou zahrnuty pouze formáty s 1 nebo 2 kanály a maximální počet 16 bitů na kanál. Stejně jako u jiných zvukových formátů byste měli používat pouze formáty uvedené čtenářem; nenakonfigurujte vlastní.
Poznámka
Výstup vícekanálového zvuku můžete provést pouze v případě, že je vaše aplikace spuštěná v systému Microsoft Windows XP nebo novější verzi systému Microsoft Windows.
Související témata