Compartilhar via


Configurando o gravador ASF

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, 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.]

Quando o filtro gravador ASF do WM é criado, ele é configurado automaticamente com o perfil WMProfile_V80_256Video. Esse perfil usa os codecs Windows Media Audio e Windows Media Video versão 8, que não são tão recentes quanto os codecs do Windows Media 9 Series. É recomendável criar um perfil personalizado que usa os codecs do Windows Media 9 Series e configurar o Gravador ASF do WM com o perfil personalizado, conforme descrito em Configurando perfis e outras propriedades de arquivo ASF. Você deve adicionar o filtro Gravador ASF do WM ao grafo de filtro antes de configurar o filtro e configurar o filtro antes de conectá-lo a outros filtros.

Todos os dados de entrada devem ter carimbo de data/hora e todos os pinos de entrada devem ser conectados antes que o filtro possa ser executado ou pausado. Portanto, se você configurar o filtro com um perfil que tenha um fluxo de áudio e um fluxo de vídeo, o filtro criará um pin de entrada de áudio e vídeo e ambos os pinos deverão ser conectados antes que o filtro possa ser executado. Como o SDK do Formato de Mídia do Windows requer que um fluxo de áudio funcione, o Gravador ASF do WM sempre deve ter um pino de áudio de entrada, mesmo que seja para um fluxo fictício, ou seja, um fluxo de áudio com baixa taxa de bits.

Adicionando extensões de unidade de dados

Você pode configurar um fluxo de perfil para extensões de unidade de dados, como códigos de tempo SMPTE, antes ou depois que o filtro estiver conectado, desde que você siga esta ordem de operações:

  1. Adicione uma ou mais extensões de unidade de dados ao fluxo usando IWMStreamConfig2::AddDataUnitExtension.
  2. Chame IWMProfile::ReconfigStream para atualizar o perfil.
  3. Chame IConfigAsfWriter::ConfigureFilterUsingProfile com o objeto de perfil atualizado.
  4. Localize o pin de entrada de vídeo e chame seu método IAMWMBufferPass::SetNotify para registrar sua interface IAMWMBufferPassCallback definida pelo aplicativo.

Quando o grafo for executado, o método IAMWMBufferPassCallback::Notify será chamado para cada quadro e você poderá obter e definir propriedades no exemplo usando seus métodos de interface INSSBuffer3 .

Observação

Em alguns cenários com uso intensivo de processador, como o telecine inverso, o Gravador ASF do WM pode exigir mais buffers de saída do que alguns filtros downstream podem dar suporte. O Decodificador DV, por exemplo, não aceitará mais de um buffer para seu pino de saída e o mesmo é verdadeiro para o Descompactador AVI em determinadas condições. Se você encontrar problemas ao tentar se conectar a esses filtros ou possivelmente ao executar o grafo, talvez seja necessário escrever um filtro intermediário que aceite qualquer número de buffers em seu pino de saída.

 

Criando arquivos ASF no DirectShow