Compartilhar via


Gravando fluxos com pixels não quadrados

[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 de 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 de 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.]

Há duas maneiras de criar fluxos de vídeo com pixels não quadrados que serão exibidos corretamente em Reprodutor Multimídia do Windows. A primeira técnica envolve a configuração de atributos de nível de fluxo no cabeçalho do arquivo. A segunda técnica envolve adicionar uma extensão de unidade de dados a um fluxo no perfil e, em seguida, definir um valor para ele em cada exemplo gravado.

Para usar atributos de cabeçalho no nível do fluxo para definir a taxa de proporção de pixel

  1. Configure o objeto gravador. Para obter mais informações, consulte Escrevendo arquivos ASF.
  2. Crie ou carregue um perfil com um ou mais fluxos de vídeo. Para obter mais informações, consulte Para usar perfis com o gravador.
  3. Chame IWMWriter::SetProfile. (Sempre chame esse método antes de definir os atributos de cabeçalho.)
  4. Chame QueryInterface para obter a interface IWMHeaderInfo3 e chame AddAttribute duas vezes para adicionar AspectRatioX e AspectRatioY como atributos de nível de fluxo do fluxo de vídeo. Esses atributos são valores DWORD .
  5. Escreva o arquivo.

Para usar extensões de unidade de dados para definir a taxa de proporção de pixel

Antes de escrever:

  1. Configure o objeto gravador. Para obter mais informações, consulte Escrevendo arquivos ASF.
  2. Crie ou carregue um perfil com um ou mais fluxos de vídeo. Para obter mais informações, consulte Para usar perfis com o gravador.
  3. Para cada fluxo (de qualquer tipo de mídia) no perfil, chame IWMStreamConfig::SetStreamName para especificar um nome exclusivo de sua escolha. Não dê a dois fluxos o mesmo nome.
  4. Use IWMStreamConfig2::AddDataUnitExtension no fluxo de vídeo para adicionar uma extensão de unidade de dados para a taxa de proporção de pixel.
  5. Chame IWMWriter::SetProfile.
  6. Escreva o arquivo.

Durante a gravação:

  • Para cada exemplo, chame INSSBuffer3::SetProperty e especifique a propriedade WM_SampleExtensionGUID_PixelAspectRatio junto com o valor correto. Os valores de taxa de proporção são gravados como dois valores concatenados de dois dígitos. Por exemplo, 16:9 é escrito como 1609 ou 0x0649. Esse é sempre um valor de 2 bytes.

Para ler e gravar fluxos de vídeo com pixels não quadrados