Partilhar via


Para transcodificar conteúdo com recompressão inteligente

[A funcionalidade associada a esta página, Windows Media Format 11 SDK, é uma funcionalidade herdada. Foi substituído por Source Reader e Sink Writer. Source Reader e Sink Writer foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize o Source Reader e o Sink Writer em vez do Windows Media Format 11 SDK, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Você pode transcodificar conteúdo de uma taxa de bits para outra usando o SDK do Windows Media Format. Normalmente, isso envolve simplesmente decodificar o conteúdo e codificá-lo novamente para a taxa de bits desejada. O codec Windows Media Audio 9 suporta compressão inteligente, que permite a transcodificação que atinge uma qualidade melhor do que o normal.

Para a recompressão inteligente, o fluxo de áudio original tem de ser codificado com o codec Windows Media Audio. Todas as versões do codec são suportadas, mas os codecs de áudio especializados (Windows Media Audio 9 Professional e Windows Media Audio 9 Voice) não são. Se o áudio original foi codificado com o codec Windows Media Audio 9 Lossless, não há necessidade de usar a compactação inteligente, porque nenhuma informação foi perdida na codificação original.

Para usar a compactação inteligente, execute as etapas a seguir.

  1. Configure um objeto leitor com o arquivo de origem para leitura. Para obter mais informações, consulte A Leitura de Arquivos ASF.
  2. Configure um objeto de gravador a ser usado para transcodificar o arquivo. Defina o nome do arquivo para o novo arquivo. Selecione um perfil a ser usado para o novo arquivo. Defina o perfil selecionado no objeto writer. Para obter mais informações, consulte Escrevendo arquivos ASF.
  3. Obtenha um ponteiro para a interfaceIWMProfile do objeto leitor chamando IWMReader::QueryInterface.
  4. Recupere o interface de IWMStreamConfig para o fluxo de áudio a ser transcodificado chamando IWMProfile::GetStream.
  5. Obtenha a interface IWMMediaProps para o objeto de configuração de fluxo chamando IWMStreamConfig::QueryInterface.
  6. Recupere a estrutura WM_MEDIA_TYPE para o fluxo fazendo duas chamadas para IWMMediaProps::GetMediaType. Obtenha o tamanho da estrutura na primeira chamada e aloque memória para um buffer passar na segunda chamada.
  7. Obtenha um ponteiro para a interface IWMInputMediaProps para a entrada no gravador chamando IWMWriter::GetInputProps.
  8. Obtenha a interface IWMPropertyVault para o objeto de propriedades de mídia de entrada chamando IWMInputMediaProps::QueryInterface.
  9. Use o método IWMPropertyVault::SetProperty para definir a propriedade g_wszOriginalWaveFormat. Use o WAVEFORMATEX estrutura obtida na etapa 6 como o valor da propriedade.
  10. Inclua as alterações feitas nas propriedades da mídia de entrada chamando IWMWriter::SetInputProps e passando-lhe um ponteiro para a interface IWMInputMediaProps.
  11. Comece a iniciar a leitura de amostras do arquivo original e a passá-las para o gravador com chamadas para IWMWriter::WriteSample.

Tópicos Avançados

Interface IWMInputMediaProps

Interface IWMMediaProps

Interface IWMProfile

Interface IWMPropertyVault

Interface IWMStreamConfig