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.
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.
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.