Inserindo formatos de fluxo nativo em arquivos ASF (QASF)
[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.]
Por padrão, o Gravador ASF do WM espera fluxos de áudio e vídeo descompactados em seus pinos de entrada e usa o SDK de Formato de Mídia do Windows para acessar os codecs de Áudio do Windows Media e Vídeo do Windows Media, que compactam os fluxos. Mas o contêiner de arquivos ASF pode ser usado para qualquer tipo de dados. Ao colocar dados de mídia digital em um contêiner de arquivos ASF, você pode adicionar recursos fornecidos pelo ASF, como metadados e DRM (gerenciamento de direitos digitais), sem precisar transcodificar seu conteúdo.
Para criar um arquivo ASF que contenha conteúdo que não seja baseado no Windows Media, o aplicativo deve compactar o fluxo no grafo de filtro upstream do Gravador do ASF do WM e ignorar o mecanismo de compactação do Gravador asF do WM chamando IConfigAsfWriter2::SetParam da seguinte maneira:
pConfigAsfWriter2->SetParam(AM_CONFIGASFWRITER_PARAM_DONTCOMPRESS,TRUE,0)
Em seguida, configure o filtro com o perfil desejado. É essencial que o tipo de mídia do fluxo de entrada corresponda exatamente ao formato no perfil. Em alguns casos, pode ser necessário examinar o formato do fluxo de entrada e criar um perfil personalizado para fazer a correspondência. Para obter mais informações, consulte Para criar arquivos ASF usando codecs de terceiros.
Ao conectar o Gravador ASF do WM ao filtro upstream, use o método IGraphBuilder::ConnectDirect. Não use nenhum método de "conexão inteligente", como IGraphBuilder::Connect ou IGraphBuilder::RenderFile , para conectar o filtro porque isso desabilitará o modo de "bypass compression" do filtro.