← WebRTC 1.0 Spesifikasyonu

Ağ Kullanımı için Medya Akışı API Uzantıları

W3C WebRTC 1.0 Spesifikasyonu — Türkçe Çeviri

9. Ağ Kullanımı için Media Stream API Uzantıları

9.1 Giriş

[GETUSERMEDIA] belirtiminde tanımlandığı üzere MediaStreamTrack arayüzü, genellikle ses veya video verilerinden oluşan bir veri akışını temsil eder. Bir veya daha fazla MediaStreamTrack, bir MediaStream içinde toplanabilir (katı anlamda, [GETUSERMEDIA] içinde tanımlanan bir MediaStream, sıfır veya daha fazla MediaStreamTrack nesnesi içerebilir).

Bir MediaStreamTrack, yalnızca yerel kamera gibi bir kaynaktan değil, uzak bir eşten gelen ya da uzak bir eşe gönderilen bir medya akışını temsil edecek şekilde genişletilebilir. Bu yeteneği MediaStreamTrack nesnesinde etkinleştirmek için gereken uzantılar bu bölümde açıklanacaktır. Medyanın eşe nasıl iletildiği [RFC8834], [RFC7874] ve [RFC8835] içinde açıklanmaktadır.

Başka bir eşe gönderilen bir MediaStreamTrack, alıcıya bir ve yalnızca bir MediaStreamTrack olarak görünür. Bir eş, bu belirtimi destekleyen bir kullanıcı aracısı olarak tanımlanır. Ayrıca, gönderen taraf uygulaması, MediaStreamTrack'in hangi MediaStream nesne(ler)inin üyesi olduğunu belirtebilir. Alıcı taraftaki karşılık gelen MediaStream nesne(ler)i (henüz mevcut değilse) oluşturulur ve buna göre doldurulur.

Bu belgede daha önce de açıklandığı üzere, RTCRtpSender ve RTCRtpReceiver nesneleri, uygulamanın MediaStreamTrack'lerin iletimi ve alımı üzerinde daha ince taneli denetim elde etmesi için kullanılabilir.

Kanallar, Media Capture and Streams belirtiminde dikkate alınan en küçük birimdir. Kanallar, örneğin bir RTP yük türü olarak iletim için birlikte kodlanmak üzere tasarlanmıştır. Bir codec'in birlikte kodlaması gereken tüm kanallar MUST aynı MediaStreamTrack içinde olmalıdır ve codec'ler, izdeki tüm kanalları kodlayabilmeli ya da atabilmelidir (SHOULD).

Belirli bir MediaStreamTrack için giriş ve çıkış kavramları, ağ üzerinden iletilen MediaStreamTrack nesneleri durumunda da geçerlidir. Bir RTCPeerConnection nesnesi tarafından oluşturulan bir MediaStreamTrack, giriş olarak uzak bir eşten alınan veriyi alır. Benzer şekilde, örneğin [GETUSERMEDIA] aracılığıyla bir kamera gibi yerel bir kaynaktan gelen bir MediaStreamTrack, nesne bir RTCPeerConnection ile kullanıldığında uzak bir eşe iletileni temsil eden bir çıkışa sahip olacaktır.

[GETUSERMEDIA] içinde açıklandığı üzere MediaStream ve MediaStreamTrack nesnelerinin çoğaltılması kavramı burada da uygulanabilir. Bu özellik, örneğin bir video konferans senaryosunda, kullanıcının kamerası ve mikrofonundan gelen yerel videonun yerel bir monitörde gösterilmesi, ancak yalnızca sesin uzak eşe iletilmesi için kullanılabilir. Farklı MediaStreamTrack nesnelerinin yeni MediaStream nesneleri içinde birleştirilmesi, belirli durumlarda yararlıdır.

Bu belgede, yalnızca bir RTCPeerConnection ile birlikte kullanıldığında ilgili olan nesnelerin yönlerini belirtmekteyiz. MediaStream ve MediaStreamTrack kullanımına ilişkin genel bilgiler için lütfen [GETUSERMEDIA] belgesindeki nesnelerin özgün tanımlarına başvurun.

9.2 MediaStream

9.2.1 id

MediaStream içinde belirtilen id özniteliği, bu akışa özgü benzersiz bir kimlik döndürür; böylece akışlar RTCPeerConnection API'sinin uzak ucunda tanınabilir.

Bir MediaStream, uzak bir eşten elde edilen bir akışı temsil etmek üzere oluşturulduğunda, id özniteliği uzak kaynak tarafından sağlanan bilgilerden başlatılır.

Bir MediaStream nesnesinin id değeri akışın kaynağına özgüdür; ancak bu, kopyaların ortaya çıkmasının mümkün olmadığı anlamına gelmez. Örneğin, yerel olarak üretilmiş bir akışın izleri bir kullanıcı aracısından RTCPeerConnection kullanılarak uzak bir eşe gönderilebilir ve ardından aynı şekilde özgün kullanıcı aracısına geri gönderilebilir; bu durumda özgün kullanıcı aracısında aynı id'ye sahip birden fazla akış bulunacaktır.

9.3 MediaStreamTrack

Yerel olmayan medya kaynağı durumunda (bir RTP kaynağı; RTCRtpReceiver ile ilişkilendirilmiş her MediaStreamTrack için geçerli olduğu gibi) bir MediaStreamTrack nesnesinin kendi MediaStream'ine olan başvurusu her zaman güçlüdür.

Bir RTCRtpReceiver, karşılık gelen MediaStreamTrack susturulmuş ancak sonlandırılmamışken ve RTCRtpReceiver'ın üyesi olduğu RTCRtpTransceiver nesnesinin [[Receptive]] yuvası true iken bir RTP kaynağı üzerinde veri aldığında, karşılık gelen MediaStreamTrack'in susturulmuş durumunu false olarak ayarlamak üzere bir görev kuyruğa almalıdır (MUST).

Bir RTCRtpReceiver tarafından alınan RTP kaynak medya akışları için SSRC'lerden biri, bir BYE alınması nedeniyle ya da zaman aşımı yoluyla kaldırıldığında, karşılık gelen MediaStreamTrack'in susturulmuş durumunu true olarak ayarlamak üzere bir görev kuyruğa almalıdır (MUST). setRemoteDescription'ın da track'in susturulmuş durumunun true değerine ayarlanmasına yol açabileceğine dikkat edin.

Bir iz ekleme, bir izi kaldırma ve bir izin susturulmuş durumunu ayarlama yordamları [GETUSERMEDIA] içinde belirtilmiştir.

Bir RTCRtpReceiver receiver tarafından üretilen bir MediaStreamTrack izi ended [GETUSERMEDIA] durumuna geçtiğinde (örneğin receiver.track.stop çağrısı yoluyla), kullanıcı aracısı, örneğin receiver'ın kod çözücüsünü kapatarak, gelen akış için ayrılmış kaynakları serbest bırakmayı tercih edebilir (MAY).

9.3.1 MediaTrackSupportedConstraints, MediaTrackCapabilities, MediaTrackConstraints ve MediaTrackSettings

Kısıtlar ve kısıtlanabilir özellikler kavramı; MediaTrackConstraints (MediaStreamTrack.getConstraints(), MediaStreamTrack.applyConstraints()) ve MediaTrackSettings (MediaStreamTrack.getSettings()) dahil olmak üzere [GETUSERMEDIA] içinde ana hatlarıyla açıklanmıştır.

Ancak, bir eş bağlantısından kaynaklanan izlerin kısıtlanabilir özellikleri, getUserMedia() tarafından sağlananlardan farklıdır; uzak bir kaynaktan gelen MediaStreamTrack'ler için geçerli kısıtlar ve ayarlar burada tanımlanmıştır. Uzak bir izin ayarları, alınan en son kareyi temsil eder.

MediaStreamTrack.getCapabilities() uzak izlerde her zaman boş küme döndürmelidir (MUST) ve MediaStreamTrack.applyConstraints() burada tanımlanan kısıtlar için her zaman OverconstrainedError ile reddetmelidir (MUST).

Uzak bir kaynaktan gelen video MediaStreamTrack'lere uygulanmak üzere aşağıdaki kısıtlanabilir özellikler tanımlanmıştır:

Özellik Adı Değerler Notlar
width ConstrainULong Bir ayar olarak, bu alınan en son karenin piksel cinsinden genişliğidir.
height ConstrainULong Bir ayar olarak, bu alınan en son karenin piksel cinsinden yüksekliğidir.
frameRate ConstrainDouble Bir ayar olarak, bu yakın zamanda alınan karelere dayalı kare hızının bir tahminidir.
aspectRatio ConstrainDouble Bir ayar olarak, bu en son karenin en-boy oranıdır; piksel cinsinden genişliğin piksel cinsinden yüksekliğe bölünmesiyle elde edilen ve ondalıkta onda bir basamağa yuvarlanan bir double değerdir.

Bu belge, uzak bir kaynaktan gelen ses MediaStreamTrack'lerine uygulanacak herhangi bir kısıtlanabilir özellik tanımlamaz.