Compartilhar via


Enviando dados asf para um ponto de publicação

[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 usar o SDK do Windows Media Format para enviar dados asf por push para um ponto de publicação em um servidor windows media. Em seguida, o servidor transmite os dados desse ponto de publicação. Esse cenário será útil se você estiver capturando ou recodificação de conteúdo em um computador e quiser distribuir o conteúdo de outro computador (ou de vários computadores). Também será útil se você precisar mover o conteúdo de um computador dentro de um firewall para um servidor windows media fora do firewall, pois a distribuição por push usa o protocolo HTTP.

Observação

Um ponto de publicação age essencialmente como um redirecionador. O cliente especifica o ponto de publicação na URL (por exemplo, mms://MyServer/MyPublishingPoint) e o servidor converte isso em uma solicitação de conteúdo.

 

Para enviar dados por push para o ponto de publicação, anexe o objeto de coletor de push ao objeto writer. O coletor de push é usado para abrir a conexão com o servidor e gerenciar a sessão de push. O objeto writer manipula todos os outros aspectos da criação do arquivo.

Execute as seguintes etapas:

  1. Crie o objeto writer chamando a função WMCreateWriter , que retorna um ponteiro IWMWriter .
  2. Crie o objeto de coletor push chamando a função WMCreateWriterPushSink , que retorna um ponteiro IWMWriterPushSink .
  3. Anexe o coletor de rede ao gravador chamando IWMWriterAdvanced::AddSink no gravador, com um ponteiro para a interface IWMWriterPushSink do coletor de rede.
  4. Conecte-se ao servidor chamando IWMWriterPushSink::Connect.
  5. Escreva o fluxo. Essa etapa envolve a configuração do perfil no objeto writer, o envio de amostras para o gravador e, possivelmente, outras tarefas. Para obter mais informações, consulte Gravando arquivos ASF. Tarefas adicionais podem incluir a configuração de atributos de metadados (conforme descrito em Trabalhando com metadados) ou a configuração de DRM dinâmico no fluxo (conforme descrito em Habilitando o suporte a DRM). Essas tarefas são executadas exatamente como são para gravação de arquivo ASF.
  6. Depois de terminar de escrever, chame IWMWriterAdvanced::RemoveSink no gravador para desanexar o objeto de coletor de push.
  7. Chame IWMWriterPushSink::EndSession no coletor de push para encerrar a sessão com o servidor.

Essas etapas são ilustradas no aplicativo de exemplo WMVNetWrite.

Observação

Se você estiver enviando um arquivo somente de vídeo com taxa de bits muito baixa, ele poderá não começar a ser reproduzido no ponto de publicação por vários segundos. Isso pode acontecer em vários casos, por exemplo, quando um único pacote contém muitos pequenos quadros de vídeo e nenhum áudio, ou quando há um longo intervalo de tempo entre o primeiro pacote e o segundo pacote em um arquivo somente de vídeo de baixa taxa de bits. Para evitar esse problema, insira um fluxo de áudio silencioso no arquivo.

 

Autenticação

A autenticação no servidor é tratada automaticamente pelo objeto de coletor de push. No entanto, o aplicativo pode precisar fornecer credenciais. Isso é feito por meio da interface de retorno de chamada IWMCredentialCallback , da seguinte maneira:

  1. Implemente a interface IWMStatusCallback e IWMCredentialCallback em seu aplicativo.
  2. Consulte o objeto de coletor de push para a interface IWMRegisterCallback .
  3. Chame IWMRegisterCallback::Advise com um ponteiro para a interface IWMStatusCallback do aplicativo.
  4. Se o coletor de push precisar obter credenciais do aplicativo, ele consultará o ponteiro IWMStatusCallback para a interface IWMCredentialCallback e chamará IWMCredentialCallback::AcquireCredentials. Para obter informações sobre esse método, consulte Autenticação.
  5. Quando terminar, chame IWMRegisterCallback::Unadvise para parar de receber notificações de eventos do coletor de push.

Enviando dados ASF por uma rede

Trabalhando com coletores de gravador

Objeto Writer Push Sink