Configurazione dei flussi audio

I flussi audio sono in genere i più semplici da configurare. Ottenere una configurazione del flusso dal codec usando i metodi di IWMCodecInfo come descritto in Ottenere informazioni di configurazione del flusso dai codec. Nella maggior parte dei casi, non è consigliabile modificare le impostazioni da quelle recuperate.

Il formato codec selezionato da quelli enumerati dipende dall'uso previsto dei file ASF creati con il profilo. La descrizione del formato codec recuperata da IWMCodecInfo2::GetCodecFormatDesc riepiloga le caratteristiche del formato. Se l'applicazione non visualizza le descrizioni tra di esse, è possibile chiamare QueryInterface nell'interfaccia IWMStreamConfig del formato codec per ottenere l'interfaccia IWMMediaProps . È quindi possibile recuperare la struttura WM_MEDIA_TYPE chiamando IWMMediaProps::GetMediaType. Esaminando la struttura WM_MEDIA_TYPE e la struttura WAVEFORMATEX a cui punta, è possibile determinare le impostazioni del formato codec e confrontarle con le proprie esigenze.

Recupero di formati audio per la sincronizzazione A/V

Il codec Windows Media Audio e il codec Windows Media Audio Professional supportano entrambi i formati per i file solo audio e per i file audio/video. I formati solo audio sono ottimizzati per i file contenenti solo dati audio, mentre i formati audio/video sono ottimizzati per l'audio in un file con un flusso video. Durante l'enumerazione dei formati codec per questi codec, i formati audio/video vengono visualizzati dopo i formati solo audio. Le descrizioni dei formati audio/video contengono tutte la stringa "(A/V)". È possibile identificare i formati progettati per la sincronizzazione audio/video a livello di codice controllando il numero di pacchetti al secondo. I formati per la sincronizzazione hanno 5 o più pacchetti al secondo se la velocità di bit è maggiore o uguale a 32.000 bit al secondo. I formati con velocità di bit inferiori a 32.000 bit al secondo possono essere usati con il video sincronizzato se usano 3 o più pacchetti al secondo. L'esempio di codice nell'argomento To Find Audio Formats contiene il codice necessario per effettuare questa verifica:

if((pWave->nAvgBytesPerSec / pWave->nBlockAlign) >= 
       ((pWave->nAvgBytesPerSec >= 4000) ? 5.0 : 3.0))
{
    // Set this stream configuration as the new best match.
}

Recupero di formati audio Low-Delay

Il codec Windows Media 9.1 e il codec Windows Media Audio 9.1 Professional supportano entrambi i formati a basso ritardo. Questi formati hanno una finestra buffer più piccola rispetto ad altri formati audio. L'audio a ritardo ridotto è destinato a migliorare le prestazioni negli scenari in cui i file o i flussi verranno spostati di frequente; Ad esempio, un'applicazione che elenca una serie di brani per lo streaming nell'interfaccia utente e consente agli utenti di passare arbitrariamente tra di essi.

I formati con ritardo ridotto sono disponibili solo in modalità CBR (un passaggio o due passaggi). Le descrizioni del formato a basso ritardo contengono tutte la stringa "Low Delay". È possibile identificare i formati a livello di codice controllando il valore della velocità in bit del formato. Ai formati a basso ritardo vengono assegnate velocità di bit inferiori a 1 kilobit rispetto alle frequenze di bit del formato normale equivalente. Ad esempio, il codec Windows Media Audio 9.1 supporta un formato CBR a passaggio singolo con una velocità di bit di 192 kbps. Il formato equivalente a basso ritardo ha una velocità di bit di 191 kbps. Inoltre, ad eccezione del formato mono a 5 kbps supportato dal codec Windows Media Audio 9.1, i formati a basso ritardo sono gli unici formati con un valore di velocità in bit dispari.

Configurazione dell'audio a velocità in bit variabile

Quando è necessario un formato VBR (Variable Bit Rate) per uno dei codec audio di Windows Media, è possibile ottenerlo impostando le impostazioni di enumerazione nel metodo IWMCodecInfo3::SetCodecEnumerationSetting . Impostare g_wszVBREnabled su True e impostare g_wszNumPasses su 1 per VBR basato sulla qualità o 2 per VBR a due passaggi (vincolato o non vincolato). Se si usa VBR a due passaggi vincolati, è necessario impostare manualmente la velocità massima di bit e la finestra del buffer per il flusso usando i metodi di IWMPropertyVault come descritto in Configurazione dei flussi VBR.

Nei profili VBR basati sulla qualità, il membro nAvgBytesPerSec della struttura WAVEFORMATEX contiene il livello di qualità (da 1 a 100) nel byte di ordine basso e i tre byte di ordine elevato sono impostati su 0x7fffff. Non tentare di modificare l'impostazione di qualità modificando questo valore manualmente; è necessario usare il formato perché viene recuperato dal codec. Per usare un valore di qualità diverso, è necessario enumerare i formati finché non ne trovi uno che soddisfi le tue esigenze. Inoltre, nAvgBytesPerSec non verrà mantenuto nel file ASF; quando si ottiene la struttura WAVEFORMATEX per un file aperto con l'oggetto reader, nAvgBytesPerSec contiene un valore approssimativo che rappresenta il numero medio di byte al secondo.

Nota

Quando si configurano flussi audio, non è mai necessario avere un valore della finestra del buffer audio maggiore del valore per tutti i flussi video nel file. In genere non si tratta di un problema, poiché i valori della finestra del buffer audio devono essere compresi tra 1,5 e 3 secondi e i valori video devono essere compresi tra 3 e 5 secondi. Se una finestra del buffer audio è maggiore di una finestra del buffer video, il file verrà riprodotto con i flussi leggermente non sincronizzati.

 

Configurazione comune a tutti i flussi

Configurazione dei flussi

Per trovare formati audio