Yayınlar¶
Go Live yayını, bir üyenin mevcut ses bağlantısı üzerindeki bir ekran paylaşımıdır. Bir yayın anahtarı tek bir yayını adlandırır. Buradaki işlemler bir bölge tercihini kaydeder ve yayının JPEG önizleme görselini yönetir.
Bu sayfadaki her yol yalnızca kullanıcılara açıktır. Bot token'ı 403 ACCESS_DENIED ile reddedilir.
Yayın yaşam döngüsü¶
Yayını başlatmak ve durdurmak bir Gateway işlemidir. Canlıya geçmek, üyenin zaten sahip olduğu LiveKit katılımcısı üzerinde bir ekran paylaşımı izi yayımlar; yayıncı da bunu Voice State Update ile o bağlantıda self_stream ayarlayarak duyurur. TEBHOS ikinci bir bağlantı açmaz ve yeni izin vermez. Modelin tamamı Ses sayfasında anlatılır.
Yayın anahtarı¶
Yayın anahtarı, iki nokta üst üste ile ayrılmış tam olarak üç parçadan oluşan tek bir yol bölümüdür. Biçim, sunucu ses yayını için {guild_id}:{channel_id}:{connection_id}, özel arama yayını için dm:{channel_id}:{connection_id} şeklindedir.
| Parça | Tür | Açıklama |
|---|---|---|
| scope | string | Özel arama için düz metin dm ya da sunucu ses kanalı için ondalık sunucu kimliği |
| channel_id | string | Yayının çalıştığı ses kanalının veya özel kanalın ondalık kimliği |
| connection_id | string | Yayıncının ses bağlantısının connection_id değeri; ses durumundaki ve medya katılımcı kimliğindeki değerdir |
Farklı parça sayısına, boş bir kanal veya bağlantı parçasına, sayısal olmayan bir kanal parçasına ya da ne dm ne de sayı olan bir kapsama sahip anahtar 400 BAD_REQUEST döndürür.
Her yol kanalı anahtarın kanal parçasından çözümler. Yayın önizlemesi yükle ve Yayın önizlemesi yükleme URL'si oluştur ayrıca gövdelerinde bir channel_id alır; bu değer anahtarın kanal parçasına eşit olmalıdır, aksi hâlde istek 400 BAD_REQUEST döndürür.
TEBHOS kapsamı çözümlenen kanala karşı denetler. Sunucu kapsamlı bir anahtar kanalın kendi sunucusunu adlandırmalıdır; dm anahtarı ise hiçbir sunucuya ait olmayan bir kanalı adlandırmalıdır. Uyuşmazlık 403 FORBIDDEN döndürür.
Erişim kuralları¶
Yayın önizlemesini al okuma erişimi gerektirir. Bu sayfadaki diğer tüm yollar değiştirme erişimi gerektirir.
Okuma erişimi, çözümlenen kanala erişimdir: kanal var olmalı, çağıran kanalın sunucusunun üyesi (ya da özel kanalın alıcısı) olmalı ve orada VIEW_CHANNEL ile CONNECT izinlerine sahip olmalıdır. Çağıranın yayının sahibi olması gerekmez; bu yüzden kanala katılabilen her üye önizlemesini okuyabilir.
| Koşul | Yanıt |
|---|---|
| Kanal yok, çağıran sunucu üyesi değil ya da çağıran özel kanalın alıcısı değil | 404 NOT_FOUND |
Çağıranda VIEW_CHANNEL veya CONNECT yok |
403 FORBIDDEN |
Değiştirme erişimi, okuma erişiminin gerektirdiği her şeyi gerektirir. Sunucu kanalında ayrıca STREAM izni gerekir (yoksa 403 FORBIDDEN). Gateway'in ses durumlarına göre çağıranın, çözümlenen kanalda connection_id değeri anahtarın bağlantı parçası olan bir ses bağlantısına sahip olması gerekir. Böyle bir bağlantısı olmayan çağıran, kanalın sahibi olsa bile 403 FORBIDDEN ile reddedilir.
Canlı yayın olmadan da önizleme bulunabilir
Çağıran, yayın yapıp yapmadığından bağımsız olarak sahip olduğu herhangi bir ses bağlantısı için bölge kaydedebilir ve önizleme yükleyebilir.
Yayın önizlemesi yükleme nesnesi¶
Tek bir yayının önizleme görselini kabul eden kısa ömürlü bir URL. Yayın önizlemesi yükleme URL'si oluştur bunu döndürür; istemci görseli upload_url adresine tek bir PUT ile yükler.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| upload_url | string | Önizleme baytlarını tek bir PUT isteğiyle kabul eden, önceden imzalanmış nesne depolama URL'si |
| method | string | Her zaman PUT |
| content_type | string | PUT ile gönderilecek medya türü. İstekteki content_type olduğu gibi döndürülür; alan yoksa image/jpeg olur |
| expires_at | ISO8601 zaman damgası | URL'nin süresinin dolduğu zaman |
| expires_in | integer | Saniye cinsinden URL ömrü, her zaman 86400 |
| max_bytes | integer | Kabul edilen en büyük bayt sayısı, her zaman 1000000 |
İstemci URL'yi tam olarak döndürüldüğü gibi göndermek ve döndürülen content_type değerini göndermek ZORUNDADIR. URL süresi dolana kadar tekrarlanan PUT isteklerini kabul eder ve her biri önceki önizlemenin yerini alır.
Örnek¶
{
"upload_url": "https://cdn.example.com/stream_previews/1189375284394692608-1189375284394692610-abc123-3f9a1c2d4e5b6a70.jpg?X-Amz-Signature=...",
"method": "PUT",
"content_type": "image/jpeg",
"expires_at": "2026-09-24T12:00:00.000Z",
"expires_in": 86400,
"max_bytes": 1000000
}
Yayın bölgesini değiştir¶
PATCH /streams/{stream_key}/stream
Bir yayın için tercih edilen medya bölgesini kaydeder ve boş gövdeyle 204 döndürür. Çağıranın değiştirme erişimi sınırını karşılaması gerekir.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| stream_key | string | Bölgesi ayarlanan yayın anahtarı |
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| region? | ?string | 1 ile 64 karakter arası RTC bölge kimliği. Verilmezse bölge saklanmaz |
Bölge tanımlayıcısı, RTC bölgelerini listele tarafından döndürülen bir RTC region nesnesinin id değeridir. Uzunluk sınırının dışındaki bir değer 400 BAD_REQUEST döndürür.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 204 | boş | Tercih kaydedildi |
| 400 | hata yanıtı | Yayın anahtarı hatalı biçimli ya da region sınırların dışında |
| 403 | hata yanıtı | Anahtarın kapsamı kanalla uyuşmuyor, çağıranda gerekli bir izin yok ya da eşleşen ses bağlantısı yok |
| 404 | hata yanıtı | Kanal yok veya çağıran tarafından erişilemiyor |
Yan etkiler¶
Tercih bir gün boyunca tutulur. Çağrı yayını taşımaz, TEBHOS bölgeyi çağıranın erişebildiği bölgelere karşı doğrulamaz ve hiçbir Gateway Dispatch'i gönderilmez.
Hız sınırı¶
channel:stream:update kovasında, her kullanıcı ve yayın anahtarı için 10 saniyede 20 istek.
Yayın önizlemesini al¶
GET /streams/{stream_key}/preview
Bir yayın için saklanan önizleme baytlarını döndürür. Çağıranın okuma erişimi sınırını karşılaması gerekir.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| stream_key | string | Önizlemesi döndürülen yayın anahtarı |
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | önizleme baytları | Saklanan bir önizleme var |
| 400 | hata yanıtı | Yayın anahtarı hatalı biçimli |
| 403 | hata yanıtı | Anahtarın kapsamı kanalla uyuşmuyor ya da çağıranda VIEW_CHANNEL veya CONNECT yok |
| 404 | hata yanıtı | Kanal yok veya erişilemiyor ya da bu anahtar için saklanan önizleme yok |
200 yanıtı Cache-Control: no-store, private ve Pragma: no-cache taşır. Content-Type değeri önizleme yazılırken kaydedilen medya türüdür; kaydedilmemişse image/jpeg olur.
Saklanan önizlemenin süresi yazıldıktan bir gün sonra dolar. Bu noktadan sonraki bir okuma, eksik veya okunamayan bir saklanan nesne ve 1,000,000 bayttan büyük bir nesne; hepsi 404 ile yanıtlanır. İstemcinin, kanalı başka açılardan erişilebilir olan bir 404'ü "henüz önizleme yok" olarak değerlendirmesi GEREKİR.
Yüklenen baytlar her yolda incelenmez; bu yüzden istemci Content-Type değerini yük biçiminin kanıtı olarak değerlendirMEMELİ ve kod çözmeyi savunmacı biçimde yapmak ZORUNDADIR.
Hız sınırı¶
channel:stream:preview:get kovasında, her kullanıcı ve yayın anahtarı için 10 saniyede 60 istek.
Yayın önizlemesi yükle¶
POST /streams/{stream_key}/preview
Yayının önizlemesini base64 olarak satır içinde gönderilen bir JPEG ile değiştirir ve boş gövdeyle 204 döndürür. Çağıranın değiştirme erişimi sınırını karşılaması gerekir.
Görsel baytlarını ayrı bir PUT isteğiyle yüklemek için Yayın önizlemesi yükleme URL'si oluştur yolunu kullanın.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| stream_key | string | Önizlemeyi alan yayın anahtarı |
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| channel_id | snowflake | Yayının etkin olduğu kanalın kimliği; anahtarın kanal parçasına eşittir. Dize veya sayı |
| thumbnail | base64 string | 1 ile 2,000,000 karakter arası, base64 ile kodlanmış JPEG |
| content_type? | string | Bildirilen medya türü |
Büyük/küçük harf fark etmeksizin jpeg veya jpg içeren bir content_type, baytlar incelenmeden kabul edilir. Diğer her değer ve alanın yokluğu, yalnızca çözülen baytlar FF D8 ile başlayıp FF D9 ile bitiyorsa kabul edilir. Çözülen görsel en fazla 1,000,000 bayttır. TEBHOS kabul edilen content_type değerini olduğu gibi, alan yoksa image/jpeg olarak saklar. Görsel ayrıca içerik politikası ihlalleri için taranabilir.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 204 | boş | Önizleme kabul edildi |
| 400 | hata yanıtı | Yayın anahtarı hatalı biçimli, gövdedeki kanal anahtarla uyuşmuyor, thumbnail boş, çok uzun, geçerli base64 değil veya boşa çözülüyor, görsel JPEG değil, 1,000,000 baytı aşıyor ya da içerik politikasını ihlal ediyor |
| 403 | hata yanıtı | Anahtarın kapsamı kanalla uyuşmuyor, çağıranda gerekli bir izin yok ya da eşleşen ses bağlantısı yok |
| 404 | hata yanıtı | Kanal yok veya çağıran tarafından erişilemiyor |
Yan etkiler¶
Çözülen baytlar, yayın anahtarının önceden sahip olduğu önizlemenin yerini alır ve önizlemenin süresi yazmadan bir gün sonra dolar. Hiçbir Gateway Dispatch'i gönderilmez; izleyiciler yeni görseli bir sonraki Yayın önizlemesini al okumasında görür.
Hız sınırı¶
stream:preview:post kovasında, her yayın anahtarı için 10 saniyede 20 istek.
Yayın önizlemesi yükleme URL'si oluştur¶
POST /streams/{stream_key}/preview/upload-url
JPEG önizlemenin sınırlı bir PUT yüklemesine izin veren bir yayın önizlemesi yükleme nesnesi döndürür. Çağıranın değiştirme erişimi sınırını karşılaması gerekir.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| stream_key | string | Önizlemeyi alan yayın anahtarı |
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| channel_id | snowflake | Yayının etkin olduğu kanalın kimliği; anahtarın kanal parçasına eşittir. Dize veya sayı |
| content_type? | string | Bildirilen medya türü. Yalnızca büyük/küçük harf fark etmeksizin jpeg veya jpg içeren bir değer kabul edilir; alanın yokluğu image/jpeg anlamına gelir |
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | yayın önizlemesi yükleme nesnesi | Yükleme URL'si verildi |
| 400 | hata yanıtı | Yayın anahtarı hatalı biçimli, gövdedeki kanal anahtarla uyuşmuyor ya da bildirilen medya türü JPEG değil |
| 403 | hata yanıtı | Anahtarın kapsamı kanalla uyuşmuyor, çağıranda gerekli bir izin yok ya da eşleşen ses bağlantısı yok |
| 404 | hata yanıtı | Kanal yok veya çağıran tarafından erişilemiyor |
Yan etkiler¶
Ayrı bir tamamlama çağrısı yoktur. PUT başarılı olduktan sonra Yayın önizlemesini al yüklenen görseli döndürür; o zamana kadar 404 ya da önceki görseli döndürür. Bu çağrının yazdığı önizleme kaydının süresi bir gün sonra dolar; bu yüzden bundan sonra kullanılan bir URL, hiçbir okumanın bulamayacağı bir nesne yazar. Hiçbir Gateway Dispatch'i gönderilmez.
Yükleme incelenmez
Önceden imzalanmış URL, imzalı medya türünü ve boyutu yalnızca nesne depolamanın uyguladığı ölçüde zorunlu kılar. max_bytes değerini aşıp yine de saklanan bir nesne hiçbir zaman sunulmaz: Yayın önizlemesini al bunun için 404 ile yanıt verir.
Hız sınırı¶
stream:preview:upload_url kovasında, her yayın anahtarı için 10 saniyede 20 istek.
Yayın önizlemesini sil¶
DELETE /streams/{stream_key}/preview
Bir yayın için saklanan önizlemeyi siler ve boş gövdeyle 204 döndürür. Olmayan bir önizlemeyi silmek de 204 döndürür. Çağıranın değiştirme erişimi sınırını karşılaması gerekir.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| stream_key | string | Önizlemesi silinen yayın anahtarı |
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 204 | boş | Önizleme silindi ya da hiç saklanmamıştı |
| 400 | hata yanıtı | Yayın anahtarı hatalı biçimli |
| 403 | hata yanıtı | Anahtarın kapsamı kanalla uyuşmuyor, çağıranda gerekli bir izin yok ya da eşleşen ses bağlantısı yok |
| 404 | hata yanıtı | Kanal yok veya çağıran tarafından erişilemiyor |
Yan etkiler¶
Önizleme artık okunamaz ve saklanan nesnesi kaldırılır. Hiçbir Gateway Dispatch'i gönderilmez.
Hız sınırı¶
stream:preview:delete kovasında, her yayın anahtarı için 10 saniyede 20 istek.