Ağ Kaynağı Özellikleri

Ağ kaynağı, akış medya dosyaları için temel uygulama sağlar ve IMFMediaSource arabirimini kullanıma sunar. Belirli bir ağ kaynağı uygulaması, RTSP veya HTTP gibi kaynağı açmak için kullanılan protokole bağlıdır. Protokole özgü ağ kaynakları temel ağ işlevselliğini genişletir. Desteklenen düzenler ve protokoller hakkında bilgi için bkz. desteklenen protokoller .

Ağ kaynağı:

  • Önbelleğe alma, ara sunucu algılama ve otomatik yeniden bağlantı gibi özellikleri uygular.
  • Kaynak çözümleyiciden protokolden bağımsız çağrıları protokole özgü çağrılara dönüştürür.
  • Yuva katmanı ve işletim sistemiyle etkileşim kurar. SDP açıklamasını ayrıştırıp yapılandırma verileri olarak kullanır ve temel yuva katmanından akış verilerini okur. Alırken, ağ kaynağı paketlerin yeniden sıralanmasından ve yeniden iletim istenmelerinden sorumludur.

Ağ Kaynağı Oluşturma

Ağdan bir kaynak için medya kaynağı oluşturmak, yerel bir dosyanın medya kaynağından farklı değildir. Uygulama, kaynağın URL'sini Kaynak Çözümleyicisi yöntemlerine geçirir; örneğin, IMFSourceResolver::CreateObjectFromURL veya IMFSourceResolver::BeginCreateObjectFromURL ve MF_RESOLUTION_MEDIASOURCE bayrağını belirtir. Bu bayrağı kullanma hakkında daha fazla bilgi için bkz. kaynak çözümleyiciyi kullanma .

Uygulama tarafından sağlanan şemaya bağlı olarak, kaynak çözümleyici IMFSchemeHandler arabirimini kullanıma sunan uygun şema işleyici nesnesini yükler. Uygulama, IMFSchemeHandler::BeginCreateObjectçağrısı yaparak ağ kaynağını oluşturmak için şema işleyicisini doğrudan da kullanabilir.

Daha fazla bilgi için bkz. Düzen İşleyicileri ve Byte-Stream İşleyicileri.

Media Foundation, ağ kaynakları için bayt akışlarını desteklemez. Bayt akışı nesnesi yalnızca indirilen içerik senaryosunda desteklenir. Tüm veriler, yerel makineye dosya olarak kaydedilebilmesi için mümkün olan en kısa sürede iletilir. web sunucuları indirilen verileri sağlar. İndirme başladıktan sonra istemciden sunucuya iletişim yoktur. Bu durumda HTTP indirme protokolü kullanılır.

Uygulama kaynak çözümleyiciden "http:", "mms:" veya "rtsp:" düzenleri için bayt akışı nesnesi oluşturmasını isterse, çağrı MF_E_UNSUPPORTED_SCHEME hatasıyla başarısız olur.

Not

Windows 7'de, ağ kaynağı Windows Media Station dosyalarını ( destekler. NSC). Bu dosyalar, ağ üzerinden medya içeriğinin çok noktaya yayın akışında kullanılır. Belirtilen bir için ağ kaynağı oluşturmak için. NSC dosyası, uygulamanın kaynak çözümleyiciyi kullanması gerekir.

 

Uygulama şema işleyicisini kullanıyorsa, zaman uyumsuz çağrı dwFlags parametresini yoksayar ve tamamlandığında ağ kaynağına bir işaretçi döndürür.

Aşağıdaki çizimde, ağ kaynağı kullanılarak medya akışı için veri akışı gösterilmektedir.

Uygulamadan akış sunucusuna giden yolları gösteren akış grafiği; ağ kaynağı ile medya oturumu arasında bir döngü

Ağ Kaynağı Yapılandırması

Bu konu, ağ kaynağı tarafından desteklenen özellikleri ve ilişkili yapılandırma seçeneklerini açıklar. Bir uygulama, ağ kaynağı nesnesini oluştururken ağ kaynağını yapılandırabilir. Bu seçenekler, uygulamanın kaynak çözümleyici yöntemlerinin pProps parametresine veya IMFSchemeHandler::BeginCreateObjectgeçirmesi gereken IPropertyStore nesnesinde depolanır.

Otomatik Yeniden Bağlan

Ağ kaynağının otomatik yeniden bağlanma özelliği, sunucuya TCP bağlantısı başarısız olduğunda veya istemci paketleri alamadığında istemcinin medya sunucusuna otomatik olarak yeniden bağlanmasını sağlar. Bağlantı başarısız olduğunda, ağ kaynağı önceki bağlantıda kullanılan yapılandırmayı kullanarak medya sunucusuna yeniden bağlanmayı dener. Yeniden bağlanma işlemi zaman uyumsuzdur. Ağ kaynağı, yeniden bağlanma başladığında MEReconnectStart olayını ve yeniden bağlantı başarılı veya başarısız olduğunda MEReconnectEnd olayını.

Yeniden bağlanma denemelerinin sayısı MFNETSOURCE_AUTORECONNECTLIMIT özelliği tarafından belirtilen en yüksek değeri aşarsa, yeniden bağlanma işlemi iptal edilir. Yeniden bağlanma denemelerinin sayısı MFNETSOURCE_AUTORECONNECTPROGRESS özelliğinde depolanır.

Otomatik yeniden bağlanma, medya sunucusuna TCP bağlantısı başarısız olsa bile medya içeriğinin sorunsuz kayıttan yürütülmesini sağlar. Sorunsuz bir kayıttan yürütme deneyimi için istemcinin yeniden bağlanana kadar kayıttan yürütmeye devam etmek için önbelleğinde en az 1-2 dakika kadar yeterli veri olması gerekir. Ağ kaynağının arabelleğe alınabileceği maksimum veri miktarı MFNETSOURCE_MAXBUFFERTIMEMS özelliğinde ayarlanabilir.

Hızlı Akış

Ağ kaynağı istemcisi, sunucudan içeriğin başındaki verilerin bir kısmını, içeriğin bit hızıyla belirtilenden daha hızlı bir hızda akışla aktarmasını ister. Sunucuda Hızlı Başlangıç etkinleştirilirse, sunucu hızlandırılmış bit hızı akışı gönderir, böylece istemci gerçek zamanlıdan daha hızlı yeterli miktarda veriyi arabelleğe alabilir. Bu, istemci bilgisayarın veya ağın düşük hızı ve kullanılabilir bant genişliği gibi çeşitli faktörlerden kaynaklanabilecek ilk arabelleğe alma gecikmelerini en aza indirerek kullanıcı deneyimini geliştirir.

İstemcinin isteyebileceği hızlı akış verilerinin miktarını belirtmek için MFNETSOURCE_ACCELERATEDSTREAMINGDURATION özelliğini ayarlayın. Ağ kaynağı aktarım protokolü olarak UDP kullanıyorsa, bunun yerine MFNETSOURCE_MAXUDPACCELERATEDSTREAMINGDURATION özelliğini ayarlayarak en fazla hızlı akış veri miktarını belirtin.

İstemcide hızlı akış, Hızlı Önbellek özelliği aracılığıyla da mümkündür. İsteğe bağlı içeriği gerçek zamanlıdan daha hızlı akışla aktarma ve verileri istemcinin yerel önbelleğinde önbelleğe alma. Bu tür bir hızlı akışı kullanmak için ağ kaynağında Hızlı Önbellek'in etkinleştirilmesi ve sunucunun bunu desteklemesi gerekir. İstemci sunucudan içerik istediğinde, ağ kaynağı önce içeriğin istemcinin önbelleğinde olup olmadığını denetler. İçerik istemcinin yerel önbelleğindeyse ve süresi dolmadıysa işlenir. İçerik yerel önbellekte değilse veya süresi zaten dolduysa, içerik akışı yapılır ve önbelleğe alınır ve ağ kaynağı yerel önbellekten yürütülür. Sonraki isteklerde çalma listeleri için yalnızca eksik girdiler önbelleğe alınır ve ardından oynatılır. Çalma listesi girdisi zaten istemcinin yerel önbelleğindeyse, buradan oynatılır ve yeniden önbelleğe alınmaz.

Varsayılan olarak, Hızlı Önbellek ağ kaynağı istemcisinde etkinleştirilir. Ancak, aşağıdaki faktörler özelliğin kullanılıp kullanılmadığını da belirler:

  • İstemcinin içeriği normal hızdan daha hızlı indirmek ve önbelleğe almak için ek bant genişliğine sahip olması gerekir.
  • İstemci yeterli disk alanına sahip olmalıdır. İstemci, istenen isteğe bağlı içeriği önbelleğe aldıktan sonra 100 MB'tan az boş disk alanına sahipse önbelleğe alınmaz, aynı anda akışa alınır ve işlenir.

Hızlı Önbellek özelliği MFNETSOURCE_CACHEENABLED özelliği tarafından denetlenmektedir.

Arabellek Yönetimi

Ağ kaynağı, istemcideki arabellek durumunu izleyen verimli arabellek yönetimi sağlar. Varsayılan olarak, ağ kaynağı başlangıçta 5 saniyelik verileri arabelleğe alır. Bu değer, MFNETSOURCE_BUFFERINGTIME özelliği ayarlanarak yapılandırılabilir. Bu özellik değerine bağlı olarak, ağ kaynağı medya içeriğinin sorunsuz ve kesintisiz kayıttan yürütülmesini sağlamak için yeterli olan arabellek boyutunu hesaplar. Bu özellik 0 olarak ayarlanırsa arabellek yönetimi devre dışı bırakılır. Arabellekteki içerik miktarı düşük olduğunda ağ kaynağı arabelleğe almayı başlatır ve arabelleğe alma işleminin başladığını belirtmek için MEBufferingStarted olayını. Bu olayı aldıktan sonra işlem hattı işlemeyi durdurur. Arabelleğe alma tamamlandığında ağ kaynağı MEBufferingStopped olayını oluşturur ve istemci işlemeye yeniden başlayabilir.

İstemci, ilk örneğin arabellek boyutuyla belirtilen veri miktarını biriktirdikten sonra içeriği işlemeye başlar. Bu değer hesaplanan arabellek boyutundan düşükse kayıttan yürütme hemen başlar. Bu davranış Hızlı Başlangıç özelliğine çok benzer.

MFNETSOURCE_MAXBUFFERTIMEMS özelliği arabelleğe alınabilecek maksimum veri miktarını depolar.

Bant Genişliği Seçimi

Bir istemci, bağlantı kurulumunun bir parçası olarak medya sunucusuna bağlandığında, ağ kaynağı istemci ile sunucu arasındaki ilk bağlantı bant genişliğini tahmin etmek için statik paket çifti ölçümü gerçekleştirir. Bu ölçümün sonucuna bağlı olarak istemci, tahmini bant genişliğine sığan ses ve video akışlarını seçebilir. Bu, akış medya içeriğinin sorunsuz kayıttan yürütülmesini sağlar.

Hızlı Başlangıç aşamasında dinamik paket çifti ölçümü gerçekleştirilir. Bu işlemde istemci, birden çok paket veya örnek olabilecek büyük miktarda veri alır.

Dinamik paket çifti ölçümünün sonucu statik paket çifti ölçümü tarafından döndürülen bağlantı bant genişliği tahmininden daha doğrudur çünkü statik paket çifti işlemi sabit boyutlu tek bir paket gönderir ve bu da yüksek bant genişliği ağları için doğru sonuçlar vermeyebilir.

Uygulama, MFNETSOURCE_PPBANDWIDTH özelliğini kullanarak tahmini bant genişliğini alabilir.

Ağ koşulları dinamik olarak değişebilir ve ağ kaynağının kayıttan yürütülmesinde hatalara neden olabilir. Ağ kaynağı, istemcinin ilk akış seçimini alma hızına ve arabellek durumuna göre değiştirebilir. Örneğin, istemci ağ tıkanıklığı sırasında daha düşük bir bit hızına geçebilir ve ağ trafiği iyileştirilmiş ve istemci yeterli miktarda arabelleğe alınmış içerik biriktirdiğinde daha yüksek bit hızına geri dönebilir.

Media Foundation 'da Ağı