Dela via


Läsa multikanalsljud

[Funktionen som är associerad med den här sidan, Windows Media Format 11 SDK, är en äldre funktion. Det har ersatts av Source Reader och Sink Writer. Source Reader och Sink Writer har optimerats för Windows 10 och Windows 11. Microsoft rekommenderar starkt att ny kod använder Source Reader och Sink Writer i stället för Windows Media Format 11 SDK, när det är möjligt. Microsoft föreslår att befintlig kod som använder äldre API:er skrivs om för att använda de nya API:erna om möjligt.]

Windows Media Audio 9 Professional-codec kan koda multichannel-ljud (mer än två kanaler). När du läser en fil med multikanalsljud måste du konfigurera utdata korrekt, annars levereras ljudet med lägre kvalitet och i stereo. Om du vill ange utdata för ljudleverans med flera kanaler måste du ange två utdatainställningar: g_wszEnableDiscreteOutput och g_wszSpeakerConfig.

Genom att ställa in g_wszEnableDiscreteOutput till TRUE konfigurerar du codec för att leverera högupplöst ljudutgång. Hd-ljud kodas av Windows Media Audio 9 codec med 24-bitarsprover i stereo eller flera kanaler. Om den här inställningen är FALSElevereras endast 16-bitars stereoutdata.

Antalet högtalare på den spelande datorn anges med g_wszSpeakerConfig. Den här inställningen är ett DWORD- värde inställt på en av DirectSound-talarkonstanterna som anges i följande tabell. För att lösa dessa konstanta namn för kompilatorn måste du inkludera dsound.h.

Konstant Värde Beskrivning
DSSPEAKER_DIRECTOUT 0x00000000 Ljudet skickas direkt, utan att konfigureras för högtalare.
DSHÖGTALARE_HÖRLURAR 0x00000001 Klientdatorn är utrustad med hörlurar.
DSSPEAKER_MONO 0x00000002 Klientdatorn är utrustad med en monaural högtalare.
DSSPEAKER_QUAD 0x00000003 Klientdatorn är utrustad med fyrkanaliga högtalare.
DSSPEAKER_STEREO 0x00000004 Klientdatorn är utrustad med stereohögtalare.
DSSPEAKER_SURROUND 0x00000005 Klientdatorn är utrustad med högtalare med fyra kanalers surroundljud.
DSSPEAKER_5POINT1 0x00000006 Klientdatorn är utrustad med fem högtalare och en subwoofer.
DSSPEAKER_7PUNKT1 0x00000007 Klientdatorn är utrustad med sju högtalare och en subwoofer.

 

Om du vill ange de här inställningarna använder du IWMReaderAdvanced2::SetOutputSetting.

Slutligen, för att kanalerna ska matas ut diskret, utan att brytas ner till stereo, måste du ange rätt medietyp på utgången genom att följa dessa steg:

  1. Anropa IWMReader::GetOutputFormatCount för att hämta antalet format som stöds för relevanta ljudutdata. Utdataformatindex är nollbaserade.
  2. För varje format som stöds anropar du IWMReader::GetOutputFormat för att hämta IWMOutputMediaProps-gränssnittet på objektet för utdatamedieegenskaper.
  3. Anropa IWMMediaProps::GetMediaType för att hämta medietypen.
  4. Om den hämtade medietypen är önskad flerkanalstyp anger du den genom att anropa IWMReader::SetOutputProps.

När du har angett diskreta utdata och talarkonfigurationen bör de utdataformat som läsaren räknar upp innehålla flerkanalsformat som använder WAVEFORMATEXTENSIBLE- struktur. Om du räknar upp utdataformaten innan du anger egenskaperna inkluderas endast format med 1 eller 2 kanaler och högst 16 bitar per kanal. Precis som med andra ljudformat bör du endast använda de format som uppräknas av läsaren. konfigurera inte egna.

Not

Du kan endast mata ut ljud med flera kanaler om programmet körs på Microsoft Windows XP eller en senare version av Microsoft Windows.

 

indata, strömmar och utdata

läser ASF-filer

Utdatainställningar

Arbeta med High-Resolution PCM Audio