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:
- Crie o objeto writer chamando a função WMCreateWriter , que retorna um ponteiro IWMWriter .
- Crie o objeto de coletor push chamando a função WMCreateWriterPushSink , que retorna um ponteiro IWMWriterPushSink .
- Anexe o coletor de rede ao gravador chamando IWMWriterAdvanced::AddSink no gravador, com um ponteiro para a interface IWMWriterPushSink do coletor de rede.
- Conecte-se ao servidor chamando IWMWriterPushSink::Connect.
- 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.
- Depois de terminar de escrever, chame IWMWriterAdvanced::RemoveSink no gravador para desanexar o objeto de coletor de push.
- 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:
- Implemente a interface IWMStatusCallback e IWMCredentialCallback em seu aplicativo.
- Consulte o objeto de coletor de push para a interface IWMRegisterCallback .
- Chame IWMRegisterCallback::Advise com um ponteiro para a interface IWMStatusCallback do aplicativo.
- 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.
- Quando terminar, chame IWMRegisterCallback::Unadvise para parar de receber notificações de eventos do coletor de push.
Tópicos relacionados