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.
Bu konuda, Sıralayıcı Kaynağı kayıttan yürütme sırasında sunu sürelerini nasıl işlediği açıklanmaktadır.
Genel bakış
Sıralayıcı kaynağı iki farklı modu destekler: çalma listesi dizileri ve düzenleme dizileri.
Düzenleme sırasında uygulama, kayıttan yürütmeye başlamadan önce her kesimin süresini önceden belirtir. Bir çalma listesi dizisinde, uygulama süreyi önceden belirtmez. (Aslında, süre bilinmiyor olabilir.)
Her iki durumda da, bir kesimin medya başlangıç ve medya durdurma süresini belirtebilirsiniz. Bu süreler, kaynak dosyada segmentin başlayıp sona erdiği konumu belirtir. Örneğin, kaynak dosyanın 90 saniye uzunluğunda olduğunu varsayalım. İlk 10 saniyeyi ve son 10 saniyeyi kırpmak istiyorsanız aşağıdaki değerleri belirtirsiniz:
- Medya başlangıcı: 10 saniye
- Medya durağı: 80 saniye
Medya başlangıç saatini belirtmek için kaynak düğümde MF_TOPONODE_MEDIASTART özniteliğini ayarlayın. Medya durdurma süresini belirtmek için kaynak düğümde MF_TOPONODE_MEDIASTOP özniteliğini ayarlayın.
Düzenleme sırası oluşturmak için, Medya Oturumu oluştururken MF_SESSION_GLOBAL_TIME özniteliğini ayarlayın. Aksi takdirde, Medya Oturumu çalma listesi dizileri bekler. Düzenleme sırasında, her segment topolojisinin MF_TOPOLOGY_PROJECTSTART özniteliği ve MF_TOPOLOGY_PROJECTSTOP özniteliği olmalıdır.
Çalma Listesi Dizileri
Bir çalma listesi dizisinde, sunu saati sıfırdan başlar ve segment sınırları boyunca devam eder. Yerel kaynaklar, medya zamanına eşit zaman damgaları içeren örnekler sunar. İşlem hattı, zaman damgalarını aşağıdaki gibi doğru sunu zamanına dönüştürür:
- Yeni zaman damgası = medya zamanı + uzaklık − medya başlangıcı
uzaklık değeri, önceki kesimin sona erdiği sunu zamanıdır. İlk segment için uzaklık sıfırdır. Bu zaman damgası dönüştürmelerinin nasıl hesaplanmış olduğunu gösteren iki örnek aşağıda verilmiştir:
- Örnek 1: İlk segmentin (S1) 10 saniye uzunluğunda olduğunu ve ikinci segmentin (S2) medya başlangıç zamanının sıfır olduğunu varsayalım. Yerel kaynak, zaman damgaları için medya zamanını kullanır, bu nedenle S2'den gelen ilk örnekte sıfır zaman damgası bulunur. Uzaklık 10 saniyedir (S1 süresi), dolayısıyla ayarlanan zaman damgası:0 + 10 − 0 = 10 saniyedir.
- Örnek 2: S1 segmentinin 10 saniye uzunluğunda olduğunu ve S2'nin medya başlangıç zamanının 5 saniye olduğunu varsayalım. S2'den ilk örnek 5 saniyelik bir zaman damgasına (medya zamanı) sahiptir. Uzaklık 10 saniyedir, dolayısıyla ayarlanan zaman damgası:5 + 10 − 5 = 10 saniyedir.
Kaynak düğümlerdeki tüm işlem hattı bileşenleri aşağı akış, ayarlanmış zaman damgalarına sahip örnekler alır. Bir topolojideki kaynak düğümlerin farklı medya başlangıç zamanları olabilir, bu nedenle ayarlamalar topolojinin her dalı için ayrı olarak hesaplanır.
Sunu bir sonraki segmente geçtiğinde, sunu saati durmaz veya sıfırlanmaz ve sunu süresi monoton olarak artar. Yeni bir kesim başlamadan önce, Medya Oturumu uygulamaya bir MESessionNotifyPresentationTime olayı gönderir. olay, sunum saatiyle ilgili olarak segmentin başlangıç saatini ve uzaklık değerini belirtir. Yeni bir kesim başlatıldığında, işlem hattı sıralayıcı kaynağında VT_EMPTY değeriyle Başlat çağırır. Sıralayıcı kaynağı, başlangıç zamanı olmadan bir MESourceStarted olayı gönderir.
Aramak için, uygulama bir segment tanımlayıcısı ve segment içinde bir zaman uzaklığı belirtir. Aramadan sonra, sunu saati segment uzaklığında başlar. Bu işlemin nasıl çalıştığına dair bir örnek aşağıda verilmiştir:
- Örnek 3: Uygulama, 10 saniyelik bir kesim uzaklığıyla S3'ün segmentini oluşturmayı arar. Sunu saati 10 saniyede başlar (segment uzaklığı). Uzaklık, S1 ve S2 segmentlerinin süresini içermez. Sıralayıcı kaynağı, başlangıç zamanı segment uzaklığı 10 saniye olan bir MESourceStarted olayı gönderir.
Bir aramadan sonra, kayıttan yürütme bir sonraki segmente devam ederse, geçiş önceki örnekler gibi çalışır, ancak uzaklık atlanan segmentleri içermez.
Örneklerin zaman damgasını nasıl etkilediğini etkileyen diğer bazı ayrıntılar şunlardır:
- Kod çözücüler, medya durdurma süresinin ötesinde verilere ihtiyaç duyabilir. İşlem hattı, kaynaktan kod çözücü için gereken kadar veri çeker ve ardından kod çözücüsü çıkış örneklerini kırpır.
- Dönüşümler verileri arabelleğe alabilir. Örneğin, bir ses efektinin bunu yapması gerekebilir. Bir segment sona erdiğinde, dönüşümdeki son örnekteki zaman damgası segmentin sonundan önce olur çünkü dönüşüm bazı verileri geri alır. Sonraki segment başlatıldığında, ilk örnekteki zaman damgası segmentin başlangıcından biraz daha erken olur. Zaman damgalarında boşluk olmadığından medya havuzuna ulaşan veriler sürekli olur. Son segment sona erdiğinde işlem hattı dönüşümü boşalttığı için veri kaybı olmaz.
- Önceki anahtar çerçeveyi almak için kaynağın medya başlangıç zamanından biraz daha erken başlaması gerekebilir. Bu nedenle, ayarlamadan sonra ilk örneğin sunu süresi negatif olabilir.
Sıraları Düzenleme
Düzenleme sırasında uygulama, MF_TOPOLOGY_PROJECTSTART ve MF_TOPOLOGY_PROJECTSTOP özniteliklerini ayarlayarak kesim sınırlarını önceden belirtir. İşlem hattı, zaman damgaları için ayarlamaları çalma listesi dizisiyle neredeyse aynı şekilde hesaplar:
Uzaklık için, segmentin gözlemlenen ucunu kullanmak yerine MF_TOPOLOGY_PROJECTSTARTdeğerini kullanır.
Uzaklık, arama için segmentin MF_TOPOLOGY_PROJECTSTART değerine eşit bir değer ve segment uzaklığı kullanır.
Bu nedenle, bir düzenleme dizisindeki sunu zamanı, uygulama başka bir segmente başvursa bile her zaman sununun başlangıcına göre değişir.
İlgili konular