Funktioner för nätverkskälla
Nätverkskällan tillhandahåller basimplementeringen för strömmande mediefiler och exponerar IMFMediaSource- gränssnitt. Den specifika implementeringen av nätverkskällan beror på vilket protokoll som används för att öppna källan, till exempel RTSP eller HTTP. De protokollspecifika nätverkskällorna utökar de grundläggande nätverksfunktionerna. Information om de scheman och protokoll som stöds finns i protokoll som stöds.
Nätverkskällan:
- Implementerar funktioner som cachelagring, proxyidentifiering och automatisk återanslutning.
- Konverterar protokolloberoende anrop från källlösaren till protokollspecifika anrop.
- Interagerar med socketlagret och operativsystemet. Parsar SDP-beskrivningen och använder den som konfigurationsdata och läser dataströmmar från det underliggande socketlagret. När du tar emot ansvarar nätverkskällan för att ordna om och begära omöverföringar av paket.
Skapa nätverkskälla
Att skapa en mediekälla för en källa från nätverket skiljer sig inte från en mediekälla för en lokal fil. Programmet skickar URL:en för källan till Source Resolver metoder som IMFSourceResolver::CreateObjectFromURL eller IMFSourceResolver::BeginCreateObjectFromURL och anger flaggan MF_RESOLUTION_MEDIASOURCE. Mer information om hur du använder den här flaggan finns i Using the Source Resolver.
Beroende på systemet som tillhandahålls av programmet läser källlösaren in lämpligt schemahanterarobjekt, vilket exponerar IMFSchemeHandler-gränssnittet. Programmet kan också använda schemahanteraren direkt för att skapa nätverkskällan genom att anropa IMFSchemeHandler::BeginCreateObject.
Mer information finns i Scheme Handlers and Byte-Stream Handlers.
Media Foundation stöder inte byteströmmar för nätverkskällor. Byte stream-objektet stöds endast i scenariot med nedladdat innehåll. Alla data överförs så snabbt som möjligt så att de kan sparas som en fil på den lokala datorn. webbservrar tillhandahåller nedladdade data. Det finns ingen kommunikation från klienten till servern när nedladdningen har påbörjats. I det här fallet används HTTP-nedladdningsprotokollet.
Om programmet begär att källlösaren ska skapa ett byteströmobjekt för "http:", "mms:" eller "rtsp:"-scheman misslyckas anropet med MF_E_UNSUPPORTED_SCHEME-felet.
Not
I Windows 7 stöder nätverkskällan Windows Media Station-filer (. NSC). Dessa filer används i multicast-strömning av medieinnehåll via ett nätverk. Skapa nätverkskällan för en angiven . NSC-fil, programmet måste använda källlösaren.
Om programmet använder schemahanteraren ignorerar det asynkrona anropet dwFlags parametern och returnerar en pekare till nätverkskällan när den är klar.
Följande bild visar dataflödet för medieströmning med hjälp av nätverkskällan.
Konfiguration av nätverkskälla
I det här avsnittet beskrivs de funktioner som stöds av nätverkskällan och de associerade konfigurationsalternativen. Ett program kan konfigurera nätverkskällan när du skapar nätverkskällans objekt. De här alternativen lagras i ett IPropertyStore- objekt, som programmet måste skicka i parametern pProps för källlösarens metoder eller IMFSchemeHandler::BeginCreateObject.
Återanslut automatiskt
Funktionen för automatisk återanslutning i nätverkskällan gör att en klient kan återansluta till medieservern automatiskt när TCP-anslutningen till servern misslyckas eller om klienten inte kan ta emot paket. När anslutningen misslyckas försöker nätverkskällan återansluta till medieservern med samma konfiguration som användes i föregående anslutning. Återanslutningsprocessen är asynkron. Nätverkskällan genererar händelsen MEReconnectStart när återanslutningen påbörjas och händelsen MEReconnectEnd när återanslutningen lyckas eller misslyckas.
Om antalet återanslutningsförsök överskrider det högsta värde som anges av egenskapen MFNETSOURCE_AUTORECONNECTLIMIT avbryts återanslutningsåtgärden. Antalet återanslutningsförsök lagras i egenskapen MFNETSOURCE_AUTORECONNECTPROGRESS.
Automatisk återanslutning möjliggör smidig uppspelning av medieinnehåll även när TCP-anslutningen till medieservern misslyckas. För en smidig uppspelningsupplevelse måste klienten ha tillräckligt med data, minst 1 till 2 minuter, i cacheminnet för att fortsätta uppspelningen tills återanslutningen. Den maximala mängden data som nätverkskällan kan buffring kan anges i egenskapen MFNETSOURCE_MAXBUFFERTIMEMS.
Snabb direktuppspelning
Nätverkskällklienten begär att servern ska strömma en del av data i början av innehållet snabbare än den som anges av bithastigheten för innehållet. Om snabb start är aktiverad på servern skickar servern en accelererad bithastighetsström så att klienten kan buffring av tillräckligt med data snabbare än i realtid. Detta förbättrar användarupplevelsen genom att minimera de inledande buffertfördröjningarna, vilket kan orsakas av olika faktorer, till exempel låg hastighet på klientdatorn eller nätverket, och tillgänglig bandbredd.
Ange egenskapen MFNETSOURCE_ACCELERATEDSTREAMINGDURATION för att ange mängden snabbuppspelningsdata som klienten kan begära. Om nätverkskällan använder UDP som transportprotokoll anger du den maximala mängden snabbuppspelningsdata genom att ange egenskapen MFNETSOURCE_MAXUDPACCELERATEDSTREAMINGDURATION i stället.
Snabb direktuppspelning på klienten är också möjlig via funktionen Snabb cache – strömma innehåll på begäran snabbare än realtid och cachelagring av data i klientens lokala cacheminne. Om du vill använda den här typen av snabb direktuppspelning måste Fast Cache vara aktiverat på nätverkskällan och servern måste ha stöd för den. När klienten begär innehåll från servern kontrollerar nätverkskällan först om innehållet redan finns i klientens cacheminne. Om innehållet finns i klientens lokala cacheminne och inte har upphört att gälla återges det. Om innehållet inte finns i den lokala cachen eller redan har upphört att gälla strömmas och cachelagras innehållet och nätverkskällan spelar upp det från den lokala cachen. I efterföljande begäranden cachelagras endast saknade poster för spellistor och spelas sedan upp. Om en spellista redan finns i klientens lokala cache spelas den upp därifrån och cachelagras inte igen.
Som standard är Fast Cache aktiverat på nätverkskällklienten. Följande faktorer avgör dock även om funktionen används:
- Klienten måste ha extra bandbredd tillgänglig för att ladda ned och cachelagrat innehållet snabbare än den normala hastigheten.
- Klienten måste ha tillräckligt med diskutrymme. Om klienten har mindre än 100 MB ledigt diskutrymme efter cachelagring av det begärda innehållet på begäran cachelagras det inte, utan strömmas och renderas samtidigt.
Funktionen Fast Cache styrs av egenskapen MFNETSOURCE_CACHEENABLED.
Bufferthantering
Nätverkskällan tillhandahåller effektiv bufferthantering som övervakar bufferttillståndet på klienten. Som standard buffrar nätverkskällan 5 sekunders data vid start. Det här värdet kan konfigureras genom att ange egenskapen MFNETSOURCE_BUFFERINGTIME. Baserat på det här egenskapsvärdet beräknar nätverkskällan den buffertstorlek som är tillräcklig för att säkerställa jämn och oavbruten uppspelning av medieinnehållet. Om den här egenskapen är inställd på 0 inaktiveras bufferthantering. När mängden innehåll i bufferten är låg börjar nätverkskällan buffring och genererar MEBufferingStarted händelse som anger att buffring har påbörjats. När den här händelsen tas emot stoppas återgivningen av pipelinen. När buffring är klar genererar nätverkskällan MEBufferingStopad händelse och klienten kan börja återge igen.
Klienten börjar återge innehållet efter att det har ackumulerat mängden data som anges av buffertstorleken för det första exemplet. Om det här värdet är lägre än den beräknade buffertstorleken startar uppspelningen omedelbart. Det här beteendet liknar funktionen Snabb start.
Egenskapen MFNETSOURCE_MAXBUFFERTIMEMS lagrar den maximala mängden data som kan bufferas.
Val av bandbredd
När en klient ansluter till medieservern, som en del av anslutningskonfigurationen, utför nätverkskällan statiska paketpar mätning för att uppskatta den inledande länkbandbredden mellan klient och server. Baserat på resultatet av den här mätningen kan klienten välja ljud- och videoströmmar som passar inom den uppskattade bandbredden. Detta säkerställer smidig uppspelning av strömmande medieinnehåll.
Under fasen Snabb start utförs dynamiskt paketpar mätning. I den här processen tar klienten emot stora mängder data, vilket kan vara flera paket eller exempel.
Resultatet av dynamisk mätning av paketpar är mer exakt än den uppskattning av länkbandbredden som returneras av statiska paketparmätningar eftersom den statiska paketparprocessen skickar ett enda paket med fast storlek, vilket kanske inte ger korrekta resultat för nätverk med hög bandbredd.
Programmet kan hämta den uppskattade bandbredden med hjälp av egenskapen MFNETSOURCE_PPBANDWIDTH.
Nätverksvillkoren kan ändras dynamiskt, vilket orsakar problem vid uppspelning av nätverkskällan. Nätverkskällan kan ändra klientens ursprungliga strömval baserat på mottagarfrekvensen och bufferttillståndet. Klienten kan till exempel växla till en lägre bithastighet vid överbelastning i nätverket och växla tillbaka till en högre bithastighet när nätverkstrafiken har förbättrats och klienten har ackumulerat en tillräcklig mängd buffrat innehåll.
Relaterade ämnen