Condividi tramite


Invio di dati ASF a un punto di pubblicazione

[La funzionalità associata a questa pagina, Windows Media Format 11 SDK, è una funzionalità legacy. È stato sostituito da Lettore di Origin e Scrittore Sink. Source Reader e Sink Writer sono stati ottimizzati per Windows 10 e Windows 11. Microsoft consiglia vivamente di utilizzare nel nuovo codice Source Reader e Sink Writer invece di Windows Media Format 11 SDK, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

È possibile usare Windows Media Format SDK per eseguire il push dei dati ASF in un punto di pubblicazione in un server Windows Media. Il server trasmette quindi i dati da quel punto di pubblicazione. Questo scenario è utile se si acquisisce o si riscriva il contenuto in un computer e si vuole distribuire il contenuto da un altro computer (o più computer). È utile anche se è necessario spostare il contenuto da un computer all'interno di un firewall a un server Windows Media all'esterno del firewall, perché la distribuzione push usa il protocollo HTTP.

Nota

Un punto di pubblicazione agisce essenzialmente come un reindirizzatore. Il client specifica il punto di pubblicazione nell'URL (ad esempio, mms://MyServer/MyPublishingPoint) e il server lo converte in una richiesta di contenuto.

 

Per inserire i dati nel punto di pubblicazione, collegare l'oggetto di ricezione push all'oggetto di scrittura. Il push sink viene utilizzato per aprire la connessione al server e gestire la sessione push. L'oggetto writer gestisce tutti gli altri aspetti della creazione del file.

Seguire questa procedura:

  1. Crea l'oggetto Writer chiamando la funzione WMCreateWriter, che restituisce un puntatore IWMWriter.
  2. Creare l'oggetto push sink chiamando la funzione WMCreateWriterPushSink, che restituisce un puntatore IWMWriterPushSink.
  3. Collegare il collettore di rete al writer chiamando IWMWriterAdvanced::AddSink sul writer, con un puntatore all'interfaccia IWMWriterPushSink del collettore di rete.
  4. Connettersi al server chiamando IWMWriterPushSink::Connect.
  5. Scrivi il flusso. Questo passaggio comporta l'impostazione del profilo sull'oggetto writer, l'invio di esempi al writer e possibilmente altre attività. Per altre informazioni, vedere Scrittura di file ASF. Altre attività possono includere l'impostazione degli attributi dei metadati (come descritto in Uso dei metadati) o l'impostazione di DRM live nel flusso (come descritto in Abilitazione del supporto DRM). Queste attività vengono eseguite esattamente come sono per la scrittura di file ASF.
  6. Al termine della scrittura, chiamare IWMWriterAdvanced::RemoveSink sul writer per scollegare l'oggetto di sink push.
  7. Chiamare IWMWriterPushSink::EndSession nel sink push per terminare la sessione con il server.

Questi passaggi sono illustrati nell'applicazione di esempio WMVNetWrite.

Nota

Se si invia un file video senza audio a un bit-rate molto basso, è possibile che la riproduzione sul punto di pubblicazione inizi con qualche secondo di ritardo. Ciò può verificarsi in vari casi, ad esempio quando un singolo pacchetto contiene molti fotogrammi video di piccole dimensioni e nessun audio, o quando si verifica un lungo intervallo di tempo tra il primo pacchetto e il secondo pacchetto in un file contenente solo video a bassa velocità in bit. Per evitare questo problema, inserire un flusso audio invisibile all'utente nel file.

 

Autenticazione

L'autenticazione al server viene gestita automaticamente dall'oggetto sink push. Tuttavia, l'applicazione potrebbe dover fornire le credenziali. Questa operazione viene eseguita tramite l'interfaccia di callback IWMCredentialCallback, come indicato di seguito:

  1. Implementare l'interfaccia IWMStatusCallback e IWMCredentialCallback nell'applicazione.
  2. Eseguire una query sull'oggetto sink push per l'interfaccia IWMRegisterCallback.
  3. Chiamare IWMRegisterCallback::Advise con un puntatore all'interfaccia IWMStatusCallback dell'applicazione.
  4. Se il sink push deve ottenere le credenziali dall'applicazione, esegue una query sul puntatore IWMStatusCallback per l'interfaccia IWMCredentialCallback e chiama IWMCredentialCallback::AcquireCredentials. Per informazioni su questo metodo, vedere Authentication.
  5. Al termine, chiamare IWMRegisterCallback::Unadvise per interrompere la ricezione delle notifiche degli eventi dal push sink.

L'invio di dati ASF tramite una rete

Lavorare con i sink Writer

dell'oggetto sink push writer