Para transcodificar conteúdo com recompactação inteligente
[O recurso associado a esta página, Windows Media Format 11 SDK, é um recurso herdado. Ele foi substituído por Leitor de Origem e Gravador de Coletor. O Leitor de Origem e o Gravador do Coletor foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o Leitor de Origem e o Gravador do Coletor em vez do SDK do Windows Media Format 11, 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 de Formato de Mídia do Windows. Normalmente, isso envolve simplesmente decodificar o conteúdo e codificar novamente para a taxa de bits desejada. O codec do Windows Media Audio 9 dá suporte à recompactação inteligente, que permite transcodificação que atinge melhor qualidade do que o normal.
Para recompactação inteligente, o fluxo de áudio original deve ser codificado com o codec de Áudio do Windows Media. Todas as versões do codec têm suporte, 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 tiver sido codificado com o codec sem perda do Windows Media Audio 9, não será necessário usar a recompactação inteligente, pois nenhuma informação foi perdida na codificação original.
Para usar a recompactação inteligente, execute as etapas a seguir.
- Configure um objeto de leitor com o arquivo de origem para leitura. Para obter mais informações, consulte Lendo arquivos ASF.
- Configure um objeto writer 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 Gravando arquivos ASF.
- Obtenha um ponteiro para a interface IWMProfile do objeto leitor chamando IWMReader::QueryInterface.
- Recupere a interface IWMStreamConfig para o fluxo de áudio a ser transcodificado chamando IWMProfile::GetStream.
- Obtenha a interface IWMMediaProps para o objeto de configuração de fluxo chamando IWMStreamConfig::QueryInterface.
- Recupere a estrutura de 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.
- Obtenha um ponteiro para a interface IWMInputMediaProps para a entrada no gravador chamando IWMWriter::GetInputProps.
- Obtenha a interface IWMPropertyVault para o objeto de propriedades de mídia de entrada chamando IWMInputMediaProps::QueryInterface.
- Use o método IWMPropertyVault::SetProperty para definir a propriedade g_wszOriginalWaveFormat. Use a estrutura WAVEFORMATEX obtida na etapa 6 como o valor da propriedade .
- Inclua alterações feitas nas propriedades de mídia de entrada chamando IWMWriter::SetInputProps e passando um ponteiro para a interface IWMInputMediaProps .
- Comece lendo exemplos do arquivo original e passando-os para o gravador com chamadas para IWMWriter::WriteSample.
Tópicos relacionados