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.
Media Foundation, bir uygulamanın mimarinin işlem hattı katmanındaki bir ASF dosyasını temsil etmek için kullanabileceği ASF medya kaynağını sağlar.
Bir ASF dosyasını yürütmek için bir uygulama, verileri kayıttan yürütme işlem hattına beslemek için ASF medya kaynağını kullanabilir. Bir kodlama senaryosunda uygulama, asf medya kaynağını kaynak olarak kullanarak başka bir biçime dönüştürebilir veya daha yüksek bit hızına sahip bir dosyayı biçimleri değiştirmeden daha düşük bit hızına sahip bir dosyaya dönüştürebilir. ASF medya kaynağı işlem hattı katmanında kullanılmalıdır, yani bir uygulamanın işlemi denetlemek için Medya Oturumu'nı kullanması gerekir. Bu erişim düzeyi, Medya Oturumu devam ederken uygulamaların olayları almasına olanak tanır. ASF içeriğine alt düzey erişim elde etmek için bir uygulamanın WMContainer Katmanı ASF bileşenlerini kullanması gerekir.
ASF medya kaynağı, Media Foundation'daki medya kaynakları için genel arabirim olan IMFMediaSource arabirimini uygular. Diğer tüm medya kaynakları gibi ASF medya kaynağı da öncelikle ASF Üst Bilgi Nesnesi'ni açıklayan bir sunu tanımlayıcısı sağlar. Ayrıca ASF medya kaynağı, medya içeriğindeki her akışı temsil eden akış tanımlayıcıları sağlar. Daha fazla bilgi için bkz. ASF Dosya Yapısı .
- ASF Medya Kaynağı Oluşturma
- ASF Medya Kaynağı için Yapılandırma Ayarları
- ASF Medya Kaynağı Nesne Modeli
- ASF Media Source Services
- İlgili konular
ASF Medya Kaynağı Oluşturma
ASF medya kaynağını oluşturmak için uygulamanın Kaynak Çözümleyicisikullanması gerekir. ASF medya kaynağını oluşturmak için uygulamanın kaynak çözümleyicinin ASF medya kaynağını oluşturduğu kaynağı sağlaması gerekir. Kaynak bilgiler, kaynak dosyanın URL'si veya medyayı içeren bayt akışı belirtilerek sağlanmalıdır. Uygulama URL'yi belirterek ASF medya kaynağını oluşturmayı seçerse, zaman uyumlu işlem için IMFSourceResolver::CreateObjectFromURL veya IMFSourceResolver::Begin... çağrısı yapmalıdır. Zaman uyumsuz işlem için EndCreateObjectFromURL. Bayt akışından medya kaynağı oluşturma işlemi benzerdir. Uygulamanın zaman uyumlu işlem için IMFSourceResolver::CreateObjectFromByteStream veya IMFSourceResolver::Begin... çağırması gerekir. Zaman uyumsuz işlem için EndCreateObjectFromBytestream. Bu çağrılar dwFlags parametresinde MF_RESOLUTION_MEDIASOURCE belirtmelidir. Bu bayrağı kullanma hakkında daha fazla bilgi için bkz. Kaynak Çözümleyiciyi Kullanma.
Uygulama yerel bir dosya için bir URL belirtiyorsa, URL dizesi medya dosyasının yolunu içerebilir veya "dosya: "scheme" ön eki eklenebilir. Dosya adı uzantısı ".asf", ".wm", L".wma" veya ".wmv" olmalıdır. Ağdaki bir ASF dosyası için kaynak çözümleyici, ASF medya kaynağını kullanan Ağ Kaynağıoluşturur.
Nesne oluşturma işlemi sırasında, kaynak çözümleyici sistem kayıt defterindeki düzen işleyicilerinin ve bayt akışı işleyicilerinin listesini arar ve medya içeriğini ayrıştırabilen ve altında medya kaynağı nesnesi oluşturabilen en yakın eşleşen işleyiciyi yükler. Medya kaynağını (URL ve bayt akışı) oluşturmak için kullanılan yöntemden bağımsız olarak, kaynak çözümleyici bir bayt akışı oluşturur ve kaynak medyanın içeriğini bayt akışına okur. Daha fazla bilgi için bkz. Düzen İşleyicileri ve Byte-Stream İşleyicileri.
Medya kaynağı oluşturma hakkında kod örneği için bkz. kaynak çözümleyiciyi kullanma .
ASF Medya Kaynağı yapılandırma ayarları
Kaynak çözümleyici, temel alınan bayt akışının özellikleri için sorgular ve yeni oluşturulan medya kaynağında işlemlere izin verileceğini belirler. Bu özelliklerden biri aramaktır. Bir arama işlemine izin verilirse, uygulama medya kaynağının sunudaki belirli bir noktayı ararken kullandığı arama modunu belirtebilir.
Bir uygulama, nesne oluşturma sırasında medya kaynağının kullanması için arama modunu ayarlayabilir. ASF medya kaynağı belirtilen arama moduyla oluşturulduktan sonra, medya kaynağında değiştirilemez veya sunu sırasında dinamik olarak değiştirilemez. Arama tercihleri, uygulamanın medya kaynağını oluşturmak için kullanılan ilgili kaynak çözümleyici yöntemlerine yaptığı çağrıda özellikler olarak belirtilir. Bu özellik kümesi bir özellik deposunda ayarlanır ve pProps parametresine geçirilir. Bu özellikler geçirilmediyse, medya kaynağı varsayılan ayarlarla çalışır. Bu özellikleri ayarlama hakkında daha fazla bilgi için bkz. Medya Kaynağı yapılandırma.
Aramaya izin veriliyorsa ASF medya kaynağı aşağıdaki arama modlarını destekler:
- Tam arama: Bu modda, ASF medya kaynağı ASF dosyasının ASF Dizin Nesnesine dayanır. Dosyada Dizin Nesnesi yoksa, tam arama devre dışı bırakılır ve medya kaynağında ayarlanan uygulama tarafından belirtilen özelliklere bağlı olarak diğer modlardan biri kullanılır.
- Yaklaşık arama: Bu mod, özellik deposundaki MFPKEY_ASFMediaSource_ApproxSeek ilgili kaynak çözümleyici yöntemlerine geçirilerek uygulama tarafından istenir. Ancak yaklaşık arama yalnızca bayt akışı zamana bağlı aramayı desteklemiyorsa kullanılır. Bu modda, medya kaynağı arama zamanına göre daha yakın bir başlangıç zamanı belirler. ASF dosyası bir ASF Dizin Nesnesi içeriyorsa, başlangıç zamanını hesaplamak için kullanılır. Yaklaşık arama daha az doğrudur ancak tam aramadan daha hızlıdır çünkü geçen süre önceden belirlenmiş başlangıç zamanındaki ilk örneği daha hızlı işler.
- Yinelemeli arama: Bu modu ayarlamak için uygulamanın MFPKEY_ASFMediaSource_IterativeSeekIfNoIndex özelliğini ayarlaması gerekir. Yinelemeli arama, ASF Dizin Nesnesi içermeyen bir ASF dosyasında konum bulmaya yönelik bir algoritmadır. Bu modda, medya kaynağı bayt akışı uzaklığını okuyarak arama noktasının kabaca bir tahminini belirler. Hedef arama süresine aşamalı olarak daha yakın olmak için ortalama bit hızına bağlı olarak bir dizi yaklaşık değer kullanır. (Algoritma ikili aramaya benzer.) Yinelemeli arama, Dizin Nesnesi'ni kullanarak aramaktan daha uzun sürebilir, bu nedenle varsayılan olarak devre dışı bırakılır. Bu özelliği ayarlarsanız, arama parametrelerini ayarlamak için aşağıdaki özellikleri kullanın: MFPKEY_ASFMediaSource_IterativeSeek_Max_CountMFPKEY_ASFMediaSource_IterativeSeek_Tolerance_In_MilliSecond. Bu özellikler sırasıyla en fazla yineleme sayısını ve toleransı ayarlar. Algoritma, yineleme sayısı üst sınırına ulaştığında veya arama süresinden uzaklığı belirtilen tolerans içinde olan bir paket bulduğunda durur.
Özetle, ASF dosyası asf dizin nesnesi içermediğinde uygulama yaklaşık veya yinelemeli arama seçme seçeneğine sahiptir.
ASF Medya Kaynağı Nesne Modeli
ASF medya kaynağı, IMFMediaSource arabirimini uygular ve aşağıdaki arabirimleri kullanıma sunar. Bir uygulama, ASF medya kaynağında IMFMediaSource::QueryInterface çağırarak bu arabirimlere başvuru alabilir.
| Arayüz | Açıklama |
|---|---|
| IMFMediaSource | Tüm medya kaynakları için gereklidir. |
| IMFMediaEventGenerator | Tüm medya kaynakları için gereklidir. Uygulamaların Medya Oturumu aracılığıyla medya kaynağından olay almasına izin verir. |
| IMFGetService | Belirtilen hizmet arabirimi için medya kaynağını sorgular. |
| IPropertyStore | Medya kaynağındaki özellikleri ayarlar ve alır. Her özellik açıklayıcı bir ad ve bir değer içerir. |
| IMFMetadata | ASF dosyasının meta verilerini açıklar. |
| IMFMetadataProvider | Sununun tamamı için veya sunudaki bir akış için meta veri koleksiyonunu alır. |
| IMFRateSupport | Ters kayıttan yürütme dahil olmak üzere desteklenen kayıttan yürütme hızları aralığını sorgular. |
| IMFRateControl | Kayıttan yürütme hızını alır veya ayarlar. |
| IMFTrustedInput | Kaynakta yer alan ASF akışlarının her biri için ITA'sını alır. |
| IMFPMPClient | Bir medya kaynağının PMP işleminde nesne oluşturmak için kullanılan IMFPMPHost arabirimine bir işaretçi almasını sağlar. |
| IMFTimecodeTranslate | Society of Motion Picture ve Televizyon Mühendisleri (SMPTE) zaman kodları ile 100 nanosaniyelik zaman birimleri arasında dönüştürmeler. |
ASF Medya Kaynak Hizmetleri
ASF medya kaynağı, ASF dosyası için kapsamı belirlenmiş çeşitli hizmetler sağlar. Belirli bir hizmete işaretçi almak için uygulamanın MFGetServiceçağrısında aşağıdaki hizmet tanımlayıcılarından birini kullanması gerekir. Daha fazla bilgi için bkz. Hizmet Arabirimleri.
| Hizmet Tanımlayıcısı | Açıklama |
|---|---|
| MF_RATE_CONTROL_SERVICE | Bu tanımlayıcıyı kullanarak bir uygulama, IMFRateSupportveya IMFRateControlarabirimlerinibir işaretçi alabilir. Uygulama, medya kaynağı tarafından uygulanan hız destek nesnesini kullanarak, temel asf medya dosyası tarafından belirli bir oranın desteklenip desteklenmediğini de denetleyerek en hızlı ve en yavaş hızı elde edebilir. Uygulama hız denetimi nesnesini kullanarak kayıttan yürütme hızını alabilir ve ayarlayabilir. Uygulama kayıttan yürütme için belirli bir hız belirtiyorsa ASF medya kaynağı önce istenen oranın hız sınırları içinde olup olmadığını denetler (hızlı ve en yavaş hızlarla belirlenir) ve ardından hızı ayarlar. Bit hızı ağ bant genişliğine bağlı olarak herhangi bir anda değişebileceğinden bu işlem değişken koşulları denetlemez. Daha fazla bilgi için hız denetimi . |
| MF_METADATA_PROVIDER_SERVICE | Bu tanımlayıcıyı kullanarak uygulama, ASF medya kaynağının IMFMetadataProvider arabirimine bir işaretçi alabilir. Bu arabirim, ASF dosyasıyla ilgili bilgilere özellikle ASF Üst Bilgi Nesneleri ve medya içeriğinde yer alan akışlara erişim sağlar. Üst bilgi bilgileri sunu tanımlayıcı öznitelikleri aracılığıyla kullanıma sunulur ve akış bilgileri akış tanımlayıcı öznitelikleri aracılığıyla sağlanır. Bu öznitelikler hakkında daha fazla bilgi için bkz. ASF Üst Bilgi Nesneleri için Media Foundation Öznitelikleri . Öznitelikler aracılığıyla kullanıma sunulan bilgilere ek olarak, özellik olarak ayarlanan açıklayıcı meta veriler de vardır. |
| MF_PROPERTY_HANDLER_SERVICE | Uygulama, bu tanımlayıcıyı kullanarak ASF medya kaynağının IPropertyStore arabirimine bir işaretçi alabilir. Özellik deposu ASF dosyasıyla ilgili tüm meta verileri içerir. Bu tanımlayıcı Windows 7'de yenidir ve meta veri özelliklerini almak için MF_METADATA_PROVIDER_SERVICE değiştirir. |
| MFNETSOURCE_STATISTICS_SERVICE | Daha fazla bilgi için bkz. İstemci Günlüğü'nde Ağ İstatistiklerini Alma. |
| MF_TIMECODE_SERVICE | Uygulama, bu tanımlayıcıyı kullanarak medya kaynağının IMFTimecodeTranslate arabirimine yönelik bir işaretçi alabilir. Bu uygulama, SMPTE zaman kodunu 100 nano saniyelik birimlere ve geri dönüştürme gibi zaman kodu çevirileri gerçekleştirmek için kullanılabilir. |
Zaman Kodu Çevirisi
ASF medya kaynağı, uygulamanızın SMPTE zaman kodunu en yakın sunu zamanına (100 nanosaniyelik birimde) dönüştürmesini sağlayan bir zaman kodu çevirisi hizmeti sağlar. Buna karşılık, uygulama istenen sunu zamanı için zaman kodunu da alabilir. Hizmet, ASF medya kaynağının uyguladığı IMFTimecodeTranslate arabirimi aracılığıyla kullanılabilir. Bu arabirim işaretçisinde yöntem çağrıları, uygulamanızın kullanıcı arabirimini engellemeden ana uygulama iş parçacığınızdan çalıştırabilen zaman uyumsuz.
Aşağıdaki adımlar, zaman kodu çevirisi yordamını özetler:
- MFGetService çağırıp MF_TIMECODE_SERVICE tanımlayıcısını belirterek ASF medya kaynağının IMFTimecodeTranslate arabirimine yönelik işaretçiyi alın.
- ÇAĞRı IMFTimecodeTranslate::BeginConvertTimecodeToHNS veya IMFTimecodeTranslate::BeginConvertHNSToTimecode ve çevrilecek zamanı belirtin.. beginConvertTimecodeToHNS için zaman kodu VT_I8 veri türüne sahip PROPVARIANT değişkeni olarak belirtilmelidir. BeginConvertHNSToTimecode yöntemi, MFTIME türü olarak 100 nanosaniye cinsinden süreyi gerektirir.
- IMFTimecodeTranslate::EndConvertTimecodeToHNS veya IMFTimecodeTranslate::EndConvertTimecodeToHNS uygun şekilde çağırarak zaman uyumsuz işlemi tamamlayın.
Medya kaynağının oluşturulması sırasında, kaynak çözümleyici, medya kaynağının ASF içeriğini okuduğu dosya için bir bayt akışı oluşturur. Zaman dönüştürmelerinin başarılı olması için ASF dosyasıyla ilişkili bayt akışının arama özelliklerine sahip olması gerekir; aksi takdirde uygulama, Begin... çağrısından MF_E_BYTESTREAM_NOT_SEEKABLE hatasını alır. Zaman dönüştürmeleri için bir diğer gereksinim, ASF medya kaynağı tarafından temsil edilen ASF dosyasının ASF Dizin Nesneleri olması gerektiğidir. Sunu zamanları ve zaman kodları, ASF dosyası için tüm dizinleri ve ilgili arama noktalarını koruyan ASF Dizin Nesnelerinden ayıklanır. Sunum zamanı kod çevirisi için ASF dosyasının Basit Dizin Nesnesi içermesi gerekir; zaman kodundan sunuya zaman çevirisi için ASF dosyasının dizin nesnesi olmalıdır. Dönüştürme işlemleri, ASF dosyasıyla ilişkili Dizin Nesnesini ayrıştırmak ve okumak için temel dizin oluşturucu (WMContainer bileşeni) kullanır. Dosya bir Dizin Nesnesi içermiyorsa, uygulama zaman uyumsuz olarak MF_E_NO_INDEX hata kodunu alır.
Uygulama tarafından istenen süreyi çevirmek için, medya kaynağı dosya içindeki akışları numaralandırır ve uygun ASF Dizin Nesnesini içeren akışı bulur. Böyle bir akış bulunursa, doğru zaman koduna ulaşılana kadar medya kaynağı akışın ASF paketlerini ayrıştırıyor. Doğru örneği bulduktan sonra ilgili sunu saatini veya zaman kodunu örnekten alır ve çağırana döndürür.
Betik Komutu Desteği
Betik akışı içeren bir ASF topolojisi oluşturduğunuzda, topolojiye bir Betik Akışı düğümü eklenir. Bu düğüm, IMFSamples'i uygun zamanda gönderir. Betik kaynak düğümü tarafından sağlanan IMFSample verileri örnekle ilişkili IMFMediaBuffer içinde depolar. Örnek üzerinde CopyToBuffer'ı çağırarak bir IMFMediaBuffer alabilir ve ardından verileri almak için arabellekte Kilit'i çağırabilirsiniz.
Betik akışı yükleri arabelleğe bir tür dizesi olarak, ardından NULL ve ardından komut dizesi ve ardından NULL olarak paketlenir. Dizeler ASF biçiminde Unicode'dır.
Örneğin, bir yük aşağıdaki gibi görünebilir (burada \0 null karakter gösterir):
url\0http://contoso.com\0
Text\0Bu bir resim yazısı\0
İlgili konular
-
Media Foundation 'da ASF Desteği