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
- Configure o objeto gravador. Para obter mais informações, consulte Escrevendo arquivos ASF.
- 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.
- Chame IWMWriter::SetProfile. (Sempre chame esse método antes de definir os atributos de cabeçalho.)
- 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 .
- Escreva o arquivo.
Para usar extensões de unidade de dados para definir a taxa de proporção de pixel
Antes de escrever:
- Configure o objeto gravador. Para obter mais informações, consulte Escrevendo arquivos ASF.
- 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.
- 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.
- 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.
- Chame IWMWriter::SetProfile.
- 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.
Tópicos relacionados