Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ağ kaynağı, medya sunucusunun ona bağlanan istemcilerin etkinliğini izlemesi için bir yol sağlayan istemci günlüğünü destekler. İstemci günlükleri, sunucunun bağlantı, işleme ve akış istatistikleri kaydetmesini sağlar. Bu günlükler, içerik sağlayıcıları tarafından medya sunucusu kullanımını izlemek ve faturalama oluşturmak veya istemci ağının hızına bağlı olarak uygun kalitede içerik sunmak gibi çeşitli senaryolarda kullanılabilir.
Günlük dosyası birkaç istemci olay girdisi içerir. Her günlük kaydı, bir dizi boşlukla ayrılmış alan içerir. İki tür istemci günlüğü vardır: işleme (oynatma) ve akış (alma). İçerik aynı anda oynatılıp akışla aktarılabildiğinden, istemci her iki günlük verisi türünün bir bileşimini gönderebilir. Bazı durumlarda, aynı oturum için iki günlük girdisi bulunabilir. Örneğin, Hızlı Önbellek etkinleştirildiğinde, istemci, işlenmeden önce akış içeriğini almayı tamamlayabilir. Bu durumda, akış günlüğü verileri işleme günlük verisi öncesinde gönderilir.
İstemci, herhangi bir oynatma durumundan (oynatma, ileri sarma veya geri sarma) yürütme dışı duruma (durdurma, duraklatma, akışın sonu ve akış başlangıcı) geçtiğinde, işleme günlük verilerini sunucuya gönderir. İşleme günlüğü verileri gönderildiğinde, doğrudan medya sunucusuna veya yapılandırılmış bir ara sunucuya bağlantı yapılır.
İçerik, istemciyi çalıştıran bilgisayardaki geçici bir yerel önbellek dosyasında depolanıyorsa, istemci yerel önbelleğinden bir dosyayı okuyabilir ve içeriği oynattığını belirtmek için işleme günlüğü verilerini gönderebilir. Bu durumda, istemci yerel önbelleğinden bir dosyayı okur, işleme günlüğü girdisi herhangi bir ağ istatistikleri içermez ve protokol Önbellek olarak ayarlanır.
İstemci, istemcinin içeriği nasıl aldığını belirtmek için sunucuya akış günlüğü verileri gönderir, ancak nasıl işlendiğini göstermez. İstemci, akış günlüğünü istemci içeriği işlemeyi bitirmeden çok önce gönderebilir.
Bu konu, tüm günlük alanları hakkında bilgi sağlamaz. Tam bir referans için bkz. "Windows Media Log Data Structure".
Günlük Alanlarını Yapılandırma
Media Foundation, istemcinin özellikleri kullanarak ağ kaynağını yapılandırmasına olanak tanır. Uygulamanın bir özellik deposunda uygun özellikleri ayarlaması ve kaynak çözümleyici yöntemlerinden birine geçirmesi gerekir. Kaynak çözümleyici, ağ kaynağını istenen şekilde oluşturur ve sunucuyla bir bağlantı açar. Bağlantı başarılı olursa, istemci kendisi hakkında bilgi gönderir.
Aşağıdaki tabloda, bir uygulamanın kaynak çözümleyici aracılığıyla ayarlayabileceği günlük alanları ve buna karşılık gelen geçerli özellikler açıklanmaktadır. Bu bilgiler oturum sırasında değişmez.
| Kayıt alanı | Açıklama |
|---|---|
| c-playerid | Oyuncunun benzersiz kimliği. Bu bilgiler bağlantının başında gönderilir. Bu genellikle istemcinin GUID'idir. İstemci bu bilgileri MFNETSOURCE_PLAYERID özelliğindeki sunucuya gönderebilir. İstemci bu bilgileri bağlantının başında sunucuya gönderir. Örnek değer: "{c579d042-cecc-11d1-bb31-00a0c9603954}" |
| c-oyuncuversiyonu | Bağlantının başında gönderilen oynatıcının sürüm numarası. İstemci bu bilgileri MFNETSOURCE_PLAYERVERSION özelliğindeki sunucuya gönderebilir. İstemci bu bilgileri bağlantının başında sunucuya gönderir. |
| cs(User-Agent) | Oynatıcı bir tarayıcıda gömülü ise kullanılan tarayıcı türü. Bu değer, MFNETSOURCE_BROWSERUSERAGENT özelliğinde istemci tarafından ayarlanabilir. Oynatıcı eklenmemişse, bu alan günlüğü oluşturan istemcinin kullanıcı aracısına atıfta bulunur. Bu durumda istemcinin MFNETSOURCE_PLAYERUSERAGENT özelliğini ayarlaması gerekir. İstemci bu bilgileri bağlantının başında sunucuya gönderir. Örnek değer: "Mozilla/4.0_(uyumlu;_MSIE_4.01;_Windows_98)" |
| cs(Yönlendiren) | Oynatıcının eklendiği web sayfasının URL'si (eklenmişse). İstemci bu bilgileri MFNETSOURCE_BROWSERWEBPAGE özelliğindeki sunucuya gönderebilir. İstemci bu bilgileri bağlantının sonundaki sunucuya gönderir. Örnek değer: "https://www.example.microsoft.com" |
| c-hostexe | Oynatıcı günlük girişleri için, çalıştırılan ana program (.exe). Örneğin, tarayıcıdaki bir web sayfası, Microsoft Visual Basic uygulaması veya tek başına bir oynatıcı. İstemci bu bilgileri MFNETSOURCE_HOSTEXE özelliğindeki sunucuya gönderebilir. İstemci bu bilgileri bağlantının sonundaki sunucuya gönderir. Örnek değerler:
|
| c-hostexever | Ana program (.exe) sürüm numarası. İstemci bu bilgileri MFNETSOURCE_HOSTVERSION özelliğindeki sunucuya gönderebilir. İstemci bu bilgileri bağlantının sonundaki sunucuya gönderir. |
Aşağıdaki kod örneği, bir istemci uygulamasının ağ kaynağını nasıl yapılandırmış olduğunu gösterir. Bu örnekte "c-hostexe" günlük alanı ayarlanıyor.
// Creates a media source from a URL.
//
// This example demonstrates how to set the MFNETSOURCE_HOSTEXE
// configuration property on the network source.
HRESULT CreateMediaSourceWithLogParams(
PCWSTR pszURL,
IMFMediaSource **ppSource
)
{
IPropertyStore *pConfig = NULL;
// Configure the property store.
HRESULT hr = PSCreateMemoryPropertyStore(IID_PPV_ARGS(&pConfig));
if (SUCCEEDED(hr))
{
PROPERTYKEY key;
key.fmtid = MFNETSOURCE_HOSTEXE;
key.pid = 0;
PROPVARIANT var;
var.vt = VT_LPWSTR;
var.pwszVal = L"MyPlayer.exe";
hr = pConfig->SetValue(key, var);
}
// Create the source media source.
if (SUCCEEDED(hr))
{
hr = CreateMediaSource(pszURL, pConfig, ppSource);
}
SafeRelease(&pConfig);
return hr;
}
Ağ İstatistiklerini Alma
Uygulama kaynak çözümleyici yöntemlerinden birini çağırdığında, ağ kaynağını oluşturur, özellik deposunda belirtilen özellikleri ayarlar ve medya sunucusuyla bir oturum açar. Önceki bölümde açıklanan yapılandırılabilir bilgilere ek olarak, oturum başında, akış sırasında ve oturum kapatıldığında sunucu ile istemci arasında ek veriler aktarılır.
Uygulama, MFNETSOURCE_STATISTICS_SERVICE hizmet tanımlayıcısını kullanarak ağ istatistiklerini alabilir. Uygulama bu hizmeti kullanmak için MFGetService işlevini çağırarak MFNETSOURCE_STATISTICS özelliğinde ağ istatistikleri içeren özellik deposunu alabilir. Belirli değerler, MFNETSOURCE_STATISTICS_IDS numaralandırmasında tanımlanan karşılık gelen tanımlayıcı sağlanarak alınabilir.
Aşağıdaki kod örneği, istemci tarafından alınan paket sayısını almak için hizmetin nasıl kullanılacağını gösterir.
HRESULT GetPacketsReceived(IMFMediaSession *pSession, DWORD *pcPackets)
{
IPropertyStore *pProp = NULL;
PROPVARIANT var;
// Get the property store from the media session.
HRESULT hr = MFGetService(
pSession,
MFNETSOURCE_STATISTICS_SERVICE,
IID_PPV_ARGS(&pProp)
);
// Get the number of packets received by the client.
if (SUCCEEDED(hr))
{
PROPERTYKEY key;
key.fmtid = MFNETSOURCE_STATISTICS;
key.pid = MFNETSOURCE_RECVPACKETS_ID;
hr = pProp->GetValue(key, &var);
}
if (SUCCEEDED(hr))
{
*pcPackets = var.lVal;
}
PropVariantClear(&var);
SafeRelease(&pProp);
return hr;
}
Aşağıdaki listede, MFNETSOURCE_STATISTICS_IDSiçinde tanımlanan bazı ağ istatistikleri tanımlayıcıları açıklanmaktadır.
| Ağ istatistikleri tanımlayıcısı | Açıklama |
|---|---|
| MFNETSOURCE_AVGBANDWIDTHBPS_ID | İstemcinin sunucuya bağlandığı ortalama bant genişliği (saniye başına bit cinsinden). Değer, bağlantının tüm süresi boyunca hesaplanır. |
| MFNETSOURCE_BUFFERINGCOUNT_ID | İstemcinin akışı yürüterken arabelleğe alma sayısı. |
| MFNETSOURCE_BYTESRECEIVED_ID | İstemci tarafından sunucudan alınan bayt sayısı. Değer, ağ yığını tarafından eklenen ek yükü içermez. Farklı protokoller kullanılarak akışı yapılan aynı içerik farklı değerlere neden olabilir. |
| MFNETSOURCE_LINKBANDWIDTH_ID | saniye başına bit cinsinden istemcinin kullanılabilir bant genişliği üst sınırı. |
| MFNETSOURCE_LOSTPACKETS_ID | Sunucu tarafından gönderilen ancak iletim sırasında kaybolan ve istemci tarafından hiçbir zaman oynatılan paket sayısı. Değer TCP veya UDP paketlerini içermez. |
| MFNETSOURCE_RECVPACKETS_ID | Sunucudan alınan paket sayısı Değeri TCP veya UDP paketlerini içermez. |
| MFNETSOURCE_RECOVEREDBYECCPACKETS_ID | Ağda kaybolan ve istemci katmanında onarılan, kurtarılan paketler. Bu değer TCP veya UDP paketlerini içermez. |
| MFNETSOURCE_RESENDSREQUESTED_ID | İstemci tarafından yeni paketleri almak için yapılan istek sayısı. Bu değer TCP veya UDP paketlerini içermez. |
| MFNETSOURCE_RECOVEREDPACKETS_ID | UDP aracılığıyla yeniden gönderildikleri için kurtarılan paket sayısı. Bu değer TCP veya UDP paketlerini içermez. İstemci UDP yeniden gönderme kullanmıyorsa bu alan sıfır içerir. |
| MFNETSOURCE_BUFFERPROGRESS_ID | Arabelleğe alma sırasında doldurulan oynatma arabelleği yüzdesi. |
| MFNETSOURCE_PROTOCOL_ID | Akışa erişmek için kullanılan protokol. Bu, istemci tarafından istenen protokolden farklı olabilir. |
| MFNETSOURCE_TRANSPORT_ID | Akışı teslim etmek için kullanılan aktarım protokolü. Bu UDP veya TCP olmalıdır. |
İlgili konular
-
Media Foundation'da Ağ Kurma