Condividi tramite


Funzionalità dell'origine di rete

L'origine di rete fornisce l'implementazione di base per i file multimediali di streaming ed espone l'interfacciaIMFMediaSource. L'implementazione specifica dell'origine di rete dipende dal protocollo usato per aprire l'origine, ad esempio RTSP o HTTP. Le origini di rete specifiche del protocollo estendono la funzionalità di rete di base. Per informazioni sugli schemi e i protocolli supportati, vedere Protocolli supportati.

Origine di rete:

  • Implementa funzionalità come la memorizzazione nella cache, il rilevamento del proxy e la riconnessione automatica.
  • Converte le chiamate indipendenti dal protocollo dal resolver di origine a chiamate specifiche del protocollo.
  • Interagisce con il livello socket e il sistema operativo. Analizza la descrizione SDP e la usa come dati di configurazione e legge i dati del flusso dal livello socket sottostante. Quando si riceve, l'origine di rete è responsabile del riordinamento e della richiesta di ritrasmissioni di pacchetti.

Creazione origine di rete

La creazione di un'origine multimediale per un'origine dalla rete non è diversa da un'origine multimediale per un file locale. L'applicazione passa l'URL dell'origine ai metodi resolver di origine, ad esempio IMFSourceResolver::CreateObjectFromURL o IMFSourceResolver::BeginCreateObjectFromURL e specifica il flag MF_RESOLUTION_MEDIASOURCE. Per altre informazioni sull'uso di questo flag, vedere Using the Source Resolver.

A seconda dello schema fornito dall'applicazione, il resolver di origine carica l'oggetto gestore dello schema appropriato, che espone l'interfacciaIMFSchemeHandler. L'applicazione può anche usare direttamente il gestore dello schema per creare l'origine di rete chiamando IMFSchemeHandler::BeginCreateObject.

Per altre informazioni, vedere gestori di schemi e gestori di Byte-Stream.

Media Foundation non supporta i flussi di byte per le origini di rete. L'oggetto flusso di byte è supportato solo nello scenario di contenuto scaricato. Tutti i dati vengono trasmessi il più rapidamente possibile in modo che possano essere salvati come file nel computer locale. i server Web forniscono dati scaricati. Non è presente alcuna comunicazione dal client al server dopo l'inizio del download. In questo caso viene usato il protocollo di download HTTP.

Se l'applicazione richiede al sistema di risoluzione di origine di creare un oggetto flusso di byte per gli schemi "http:", "mms:" o "rtsp:", la chiamata ha esito negativo con l'errore MF_E_UNSUPPORTED_SCHEME.

Nota

In Windows 7 l'origine di rete supporta i file di Windows Media Station (. NSC). Questi file vengono usati in streaming multicast di contenuti multimediali in rete. Per creare l'origine di rete per un oggetto specificato. File NSC, l'applicazione deve usare il resolver di origine.

 

Se l'applicazione usa il gestore dello schema, la chiamata asincrona ignora il parametro dwFlags e restituisce un puntatore all'origine di rete al completamento.

La figura seguente illustra il flusso di dati per lo streaming multimediale usando l'origine di rete.

diagramma di flusso che mostra i percorsi dall'applicazione al server di streaming, con un ciclo tra l'origine di rete e la sessione multimediale

Configurazione origine di rete

In questo argomento vengono descritte le funzionalità supportate dall'origine di rete e dalle opzioni di configurazione associate. Un'applicazione può configurare l'origine di rete durante la creazione dell'oggetto di origine di rete. Queste opzioni vengono archiviate in un oggetto IPropertyStore, che l'applicazione deve passare nel parametro pProps dei metodi resolver di origine o IMFSchemeHandler::BeginCreateObject.

Riconnessione automatica

La funzionalità di riconnessione automatica dell'origine di rete consente a un client di riconnettersi automaticamente al server multimediale quando la connessione TCP al server ha esito negativo o il client non riceve pacchetti. Quando la connessione non riesce, l'origine di rete tenta di riconnettersi al server multimediale usando la stessa configurazione usata nella connessione precedente. Il processo di riconnessione è asincrono. L'origine di rete genera l'evento MEReconnectStart quando inizia la riconnessione e l'evento MEReconnectEnd quando la riconnessione ha esito positivo o negativo.

Se il numero di tentativi di riconnessione supera il valore massimo specificato dalla proprietà MFNETSOURCE_AUTORECONNECTLIMIT, l'operazione di riconnessione viene annullata. Il numero di tentativi di riconnessione viene archiviato nella proprietà MFNETSOURCE_AUTORECONNECTPROGRESS.

La riconnessione automatica consente una riproduzione uniforme del contenuto multimediale anche quando la connessione TCP al server multimediale non riesce. Per un'esperienza di riproduzione fluida, il client deve disporre di dati sufficienti, almeno da 1 a 2 minuti, nella cache per continuare la riproduzione fino alla riconnessione. La quantità massima di dati che l'origine di rete può memorizzare nel buffer nella proprietà MFNETSOURCE_MAXBUFFERTIMEMS.

Streaming veloce

Il client di origine di rete richiede al server di trasmettere alcuni dati all'inizio del contenuto a una velocità superiore a quella specificata dalla velocità in bit del contenuto. Se di avvio rapido è abilitato nel server, il server invia un flusso di velocità in bit accelerata in modo che il client possa memorizzare nel buffer una quantità di dati sufficiente rispetto a quella in tempo reale. Ciò migliora l'esperienza utente riducendo al minimo i ritardi iniziali di buffering, che possono essere causati da vari fattori, ad esempio bassa velocità del computer client o della rete e larghezza di banda disponibile.

Per specificare la quantità di dati in streaming veloce che il client può richiedere, impostare la proprietà MFNETSOURCE_ACCELERATEDSTREAMINGDURATION. Se l'origine di rete usa UDP come protocollo di trasporto, specificare la quantità massima di dati di streaming veloce impostando invece la proprietà MFNETSOURCE_MAXUDPACCELERATEDSTREAMINGDURATION.

Lo streaming rapido sul client è anche possibile tramite la funzionalità di fast cache, ovvero lo streaming di contenuti su richiesta più velocemente rispetto ai dati in tempo reale e la memorizzazione nella cache locale del client. Per usare questo tipo di streaming veloce, è necessario abilitare Fast Cache nell'origine di rete e il server deve supportarlo. Quando il client richiede contenuto dal server, l'origine di rete verifica innanzitutto se il contenuto è già presente nella cache del client. Se il contenuto si trova nella cache locale del client e non è scaduto, viene eseguito il rendering. Se il contenuto non si trova nella cache locale o è già scaduto, il contenuto viene trasmesso e memorizzato nella cache e l'origine di rete lo riproduce dalla cache locale. Nelle richieste successive, per le playlist, vengono memorizzate nella cache solo le voci mancanti e quindi riprodotte. Se una voce della playlist è già presente nella cache locale del client, viene riprodotta da lì e non memorizzata nella cache.

Per impostazione predefinita, La cache veloce è abilitata nel client di origine di rete. Tuttavia, i fattori seguenti determinano anche se la funzionalità viene usata:

  • Il client deve avere una larghezza di banda aggiuntiva disponibile per scaricare e memorizzare nella cache il contenuto più velocemente rispetto alla velocità normale.
  • Il client deve disporre di spazio su disco sufficiente. Se il client ha meno di 100 MB di spazio libero su disco dopo la memorizzazione nella cache del contenuto richiesto su richiesta, non viene memorizzato nella cache, ma viene trasmesso e sottoposto a rendering contemporaneamente.

La funzionalità Cache veloce è controllata dalla proprietà MFNETSOURCE_CACHEENABLED.

Gestione buffer

L'origine di rete fornisce una gestione efficiente del buffer che monitora lo stato del buffer nel client. Per impostazione predefinita, l'origine di rete memorizza 5 secondi di dati all'avvio. Questo valore può essere configurato impostando la proprietà MFNETSOURCE_BUFFERINGTIME. In base a questo valore della proprietà, l'origine di rete calcola le dimensioni del buffer sufficienti per garantire la riproduzione uniforme e ininterrotta del contenuto multimediale. Se questa proprietà è impostata su 0, la gestione del buffer è disabilitata. Quando la quantità di contenuto nel buffer è bassa, l'origine di rete avvia il buffering e genera l'evento MEBufferingStarted per indicare che il buffering è iniziato. Al momento della ricezione di questo evento, la pipeline interrompe il rendering. Al termine del buffering, l'origine di rete genera l'evento MEBufferingStopped e il client può riavviare il rendering.

Il client inizia a eseguire il rendering del contenuto dopo aver accumulato la quantità di dati indicata dalle dimensioni del buffer del primo campione. Se questo valore è inferiore alle dimensioni del buffer calcolato, la riproduzione viene avviata immediatamente. Questo comportamento è molto simile alla funzionalità Avvio rapido.

La proprietà MFNETSOURCE_MAXBUFFERTIMEMS archivia la quantità massima di dati che è possibile memorizzare nel buffer.

Selezione della larghezza di banda

Quando un client si connette al server multimediale, come parte della configurazione della connessione, l'origine di rete esegue misura di coppia di pacchetti statici per stimare la larghezza di banda del collegamento iniziale tra client e server. In base al risultato di questa misurazione, il client può selezionare flussi audio e video che rientrano nella larghezza di banda stimata. In questo modo si garantisce una riproduzione uniforme del contenuto multimediale di streaming.

Durante la fase di avvio rapido, viene eseguita misurazione dinamica della coppia di pacchetti. In questo processo, il client riceve grandi quantità di dati, che possono essere più pacchetti o campioni.

Il risultato della misurazione dinamica della coppia di pacchetti è più accurato della stima della larghezza di banda del collegamento restituita dalla misurazione statica della coppia di pacchetti perché il processo di coppia di pacchetti statici invia un singolo pacchetto di dimensioni fisse, che potrebbe non produrre risultati accurati per le reti a larghezza di banda elevata.

L'applicazione può ottenere la larghezza di banda stimata usando la proprietà MFNETSOURCE_PPBANDWIDTH.

Le condizioni di rete possono cambiare in modo dinamico, causando errori nella riproduzione dell'origine di rete. L'origine di rete può modificare la selezione iniziale del flusso del client in base alla frequenza di ricezione e allo stato del buffer. Ad esempio, il client potrebbe passare a una velocità di bit inferiore durante la congestione della rete e tornare a una velocità di bit superiore quando il traffico di rete è migliorato e il client ha accumulato una quantità sufficiente di contenuto memorizzato nel buffer.

Networking in Media Foundation