LiveBroadcasts

API artık canlı yayınlarınızı "çocuklara özel" olarak işaretleme özelliğini destekliyor. liveBroadcast kaynağında artık canlı yayının "çocuklara özel" durumunu tanımlayan bir özellik bulunuyor. YouTube API Hizmetleri Hizmet Şartları ve Geliştirici Politikaları da 10 Ocak 2020'de güncellendi. Daha fazla bilgi için lütfen YouTube Live Streaming API Hizmeti ve YouTube API Hizmetleri Hizmet Şartları'nın düzeltme geçmişlerine bakın.

liveBroadcast kaynağı, YouTube'da canlı video üzerinden yayınlanacak bir etkinliği temsil eder.

Yöntemler

API, liveBroadcasts kaynakları için aşağıdaki yöntemleri destekler:

list
API isteği parametreleriyle eşleşen YouTube yayınlarının listesini döndürür. Hemen deneyin.
insert
Yayın oluşturur. Hemen deneyin.
update
Yayınları günceller. Örneğin, liveBroadcast kaynağının contentDetails nesnesinde tanımlanan yayın ayarlarını değiştirebilirsiniz. Hemen deneyin.
sil
Bir yayını siler. Hemen deneyin.
bind
YouTube yayınını bir akışa bağlar veya yayın ile yayın arasındaki mevcut bir bağlantıyı kaldırır. Bir yayın yalnızca bir video akışına bağlı olabilir, ancak bir video akışı birden fazla yayına bağlı olabilir. Hemen deneyin.
transition
YouTube canlı yayınının durumunu değiştirir ve yeni durumla ilişkili tüm işlemleri başlatır. Örneğin, bir yayının durumunu testing olarak değiştirdiğinizde YouTube, videoyu ilgili yayının monitör yayınına aktarmaya başlar. Bu yöntemi çağırmadan önce, yayınınıza bağlı akış için status.streamStatus mülkünün değerinin active olduğunu onaylamanız gerekir. Hemen deneyin.
cuepoint
Canlı yayına işaret noktası ekler. İşaretçi noktası bir reklam arasını tetikleyebilir.

Kaynak temsili

Aşağıdaki JSON yapısında, liveBroadcasts kaynağının biçimi gösterilmektedir:

{
  "kind": "youtube#liveBroadcast",
  "etag": etag,
  "id": string,
  "snippet": {
    "publishedAt": datetime,
    "channelId": string,
    "title": string,
    "description": string,
    "thumbnails": {
      (key): {
        "url": string,
        "width": unsigned integer,
        "height": unsigned integer
      }
    },
    "scheduledStartTime": datetime,
    "scheduledEndTime": datetime,
    "actualStartTime": datetime,
    "actualEndTime": datetime,
    "isDefaultBroadcast": boolean,
    "liveChatId": string
  },
  "status": {
    "lifeCycleStatus": string,
    "privacyStatus": string,
    "recordingStatus": string,
    "madeForKids": string,
    "selfDeclaredMadeForKids": string,
  },
  "contentDetails": {
    "boundStreamId": string,
    "boundStreamLastUpdateTimeMs": datetime,
    "monitorStream": {
      "enableMonitorStream": boolean,
      "broadcastStreamDelayMs": unsigned integer,
      "embedHtml": string
    },
    "enableEmbed": boolean,
    "enableDvr": boolean,
    "recordFromStart": boolean,
    "enableClosedCaptions": boolean,
    "closedCaptionsType": string,
    "projection": string,
    "enableLowLatency": boolean,
    "latencyPreference": boolean,
    "enableAutoStart": boolean,
    "enableAutoStop": boolean
  },
  "statistics": {
    "totalChatCount": unsigned long
  },
  "monetizationDetails": {
      "cuepointSchedule": {
        "enabled": boolean,
        "pauseAdsUntil": datetime,
        "scheduleStrategy": string,
        "repeatIntervalSecs": unsigned integer,
      }
    }
  }
}

Özellikler

Aşağıdaki tabloda bu kaynakta görünen özellikler tanımlanmaktadır:

Özellikler
kind string
API kaynağının türünü tanımlar. Değer youtube#liveBroadcast olur.
etag etag
Bu kaynağın Etag değeri.
id string
YouTube'un yayını benzersiz bir şekilde tanımlamak için atadığı kimlik.
snippet object
snippet nesnesi, başlığı, açıklaması, başlangıç ve bitiş zamanı da dahil olmak üzere etkinlikle ilgili temel ayrıntıları içerir.
snippet.publishedAt datetime
Yayının YouTube'un canlı yayın programına eklendiği tarih ve saat. Değer ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) biçiminde belirtilir.
snippet.channelId string
YouTube'un yayını yayınlayan kanalı benzersiz şekilde tanımlamak için kullandığı kimlik.
snippet.title string
Yayının başlığı. Yayının tam olarak bir YouTube videosunu temsil ettiğini unutmayın. Bu alanı, yayın kaynağını değiştirerek veya ilgili video kaynağının title alanını ayarlayarak belirleyebilirsiniz.
snippet.description string
Yayını açıklayan metin. title ile olduğu gibi, bu alanı yayın kaynağını değiştirerek veya ilgili video kaynağının description alanını ayarlayarak belirleyebilirsiniz.
snippet.thumbnails object
Yayınla ilişkili küçük resimlerin haritası. Bu nesnede iç içe yerleştirilmiş her nesne için anahtar küçük resmin adıdır, değer ise küçük resim hakkında başka bilgileri içeren bir nesnedir.
snippet.thumbnails.(key) object
Geçerli anahtar değerleri:
  • default: Varsayılan küçük resim. Bir videonun veya videoya atıfta bulunan bir kaynağın (ör. oynatma listesi öğesi veya arama sonucu) varsayılan küçük resmi 120 piksel genişliğinde ve 90 piksel yüksekliğindedir. Kanalların varsayılan küçük resmi 88 piksel genişliğinde ve 88 piksel yüksekliğindedir.
  • medium: Küçük resmin daha yüksek çözünürlüklü bir sürümü. Videolar (veya videoya atıfta bulunan kaynaklar) için bu resim 320 piksel genişliğinde ve 180 piksel yüksekliğindedir. Kanallar için bu resim 240 piksel genişliğinde ve 240 piksel yüksekliğindedir.
  • high: Küçük resmin yüksek çözünürlüklü sürümü. Videolar (veya videoya atıfta bulunan kaynaklar) için bu resim 480 piksel genişliğinde ve 360 piksel yüksekliğindedir. Kanallar için bu resim 800 piksel genişliğinde ve 800 piksel yüksekliğindedir.
snippet.thumbnails.(key).url string
Görselin URL'si.
snippet.thumbnails.(key).width unsigned integer
Resmin genişliği.
snippet.thumbnails.(key).height unsigned integer
Resmin yüksekliği.
snippet.scheduledStartTime datetime
Yayının başlamasının planlandığı tarih ve saat. Değer ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) biçiminde belirtilir. İçerik Stüdyosu, başlangıç zamanı planlamadan yayın oluşturma özelliğini destekler. Bu durumda yayın, kanal sahibi yayın yapmaya başladığında başlar. Bu yayınlar için datetime değeri UNIX sıfır zamanına karşılık gelir ve bu değer API veya Creator Studio üzerinden değiştirilemez.
snippet.scheduledEndTime datetime
Yayının sona ermesinin planlandığı tarih ve saat. Değer, ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) biçiminde belirtilir. Bir liveBroadcast kaynağı bu özellik için bir değer belirtmezse yayının süresiz olarak devam etmesi planlanır. Benzer şekilde, bu özellik için bir değer belirtmezseniz YouTube, yayını süresiz olarak devam edecekmiş gibi değerlendirir.
snippet.actualStartTime datetime
Yayının gerçekte başladığı tarih ve saat. Bu bilgiler yalnızca yayının durumu live olduğunda kullanılabilir. Değer ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) biçiminde belirtilir.
snippet.actualEndTime datetime
Yayının gerçekten sona erdiği tarih ve saat. Bu bilgiler yalnızca yayının durumu complete olduğunda kullanılabilir. Değer, ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) biçiminde belirtilir.
snippet.isDefaultBroadcast boolean
Bu özelliğin desteği, 1 Eylül 2020'de veya sonrasında sonlandırılacaktır. Bu tarihten itibaren, bir kanal canlı yayın için etkinleştirildiğinde YouTube varsayılan yayın ve varsayılan yayın oluşturmayı durduracak. Daha ayrıntılı bilgi için lütfen kullanımdan kaldırma duyurusunu inceleyin.
Bu mülk, bu yayının varsayılan yayın olup olmadığını belirtir.

Varsayılan yayınlar nasıl çalışır?

Bir YouTube kanalı canlı yayın için etkinleştirildiğinde YouTube, kanal için varsayılan bir yayın ve varsayılan bir akış oluşturur. Yayın, kanal sahibinin canlı videoyu YouTube'a nasıl gönderdiğini tanımlar. Yayın ise izleyicilerin varsayılan yayını nasıl görebileceğini belirtir. Kanal sahipleri, bu kaynakları tanımlamak için liveStreams.list ve liveBroadcasts.list yöntemlerini kullanabilir.

Bir kanal varsayılan akışına video aktarmaya başladığında video, kanalın varsayılan yayınında görünür. Yayın sona erdiğinde YouTube, tamamlanan yayını bir YouTube videosuna dönüştürür ve videoya bir YouTube video kimliği atar.

Dönüşüm tamamlandıktan sonra video, kanalın yüklenen videolar listesine eklenir. Video, yayın sona erdikten hemen sonra yayınlanmaz. Yayın süresine bağlı olarak videonun yayınlanması biraz gecikebilir.
snippet.liveChatId string
Yayının YouTube canlı sohbetinin kimliği. Bu kimlikle sohbet mesajlarını almak, eklemek veya silmek için liveChatMessage kaynağının yöntemlerini kullanabilirsiniz. Ayrıca sohbet moderatörü ekleyebilir veya kaldırabilir, kullanıcıları canlı sohbetlere katılmaktan men edebilir ya da mevcut engellemeleri kaldırabilirsiniz.
status object
status nesnesi, etkinliğin durumuyla ilgili bilgileri içerir.
status.lifeCycleStatus string
Yayının durumu. Durum, API'nin liveBroadcasts.transition yöntemi kullanılarak güncellenebilir.

Bu mülk için geçerli değerler şunlardır:
  • complete: Yayın sona erdi.
  • created: Yayın ayarlarının eksik olması nedeniyle live veya testing durumuna geçmeye hazır değildir ancak oluşturulmuştur ve geçerlidir.
  • live: Yayın etkindir.
  • liveStarting: Yayın, live durumuna geçiş sürecindedir.
  • ready – Yayın ayarları tamamlandı ve yayın live ya da testing durumuna geçiş yapabilir.
  • revoked: Bu yayın, yönetici işlemiyle kaldırıldı.
  • testStarting: Yayın, testing durumuna geçiş sürecindedir.
  • testing: Yayın yalnızca iş ortağı tarafından görülebilir.
status.privacyStatus string
Yayının gizlilik durumu. Yayınların tam olarak bir YouTube videosunu temsil ettiğini ve bu nedenle gizlilik ayarlarının videolar için desteklenen ayarlarla aynı olduğunu unutmayın. Ayrıca, yayın kaynağını değiştirerek veya ilgili video kaynağının privacyStatus alanını ayarlayarak bu alanı ayarlayabilirsiniz.

Bu mülkün geçerli değerleri şunlardır:
  • private
  • public
  • unlisted
status.recordingStatus string
Yayının kayıt durumu.

Bu özellik için geçerli değerler şunlardır:
  • notRecording
  • recorded
  • recording
status.madeForKids boolean
Bu değer, yayının çocuklara yönelik olarak tanımlanıp tanımlanmadığını belirtir. Bu mülk değeri salt okunur.
status.selfDeclaredMadeForKids boolean
liveBroadcasts.insert isteğinde bu özellik, kanal sahibinin yayını çocuklara yönelik olarak tanımlamasına olanak tanır. liveBroadcasts.list isteğinde, mülk değeri yalnızca kanal sahibi API isteğine yetki verdiyse döndürülür.
contentDetails object
contentDetails nesnesi, etkinliğin video içeriği hakkında, içeriğin yerleşik bir video oynatıcıda gösterilip gösterilmeyeceği veya arşivlenip etkinlik sona erdikten sonra görüntülenip görüntülenmeyeceği gibi bilgileri içerir.
contentDetails.boundStreamId string
Bu değer, yayına bağlı live stream öğesini benzersiz şekilde tanımlar.
contentDetails.boundStreamLastUpdateTimeMs datetime
boundStreamId tarafından referans verilen canlı yayının en son güncellendiği tarih ve saat.
contentDetails.monitorStream object
monitorStream nesnesi, yayıncının yayın akışı herkese açık olarak gösterilmeden önce etkinlik içeriğini incelemek için kullanabileceği, izleme akışı hakkında bilgiler içerir.
contentDetails.monitorStream.enableMonitorStream boolean
Bu değer, izleme akışının yayın için etkinleştirilip etkinleştirilmeyeceğini belirler. İzleme yayını etkinleştirilirse YouTube, etkinlik içeriğini yalnızca yayıncının kullanabileceği özel bir yayında yayınlar. Yayıncı, etkinlik içeriğini incelemek ve işaret noktaları eklemek için en uygun zamanları belirlemek için yayını kullanabilir.

Yayınınız için testing aşaması kullanmak istiyorsanız veya etkinliğiniz için yayın gecikmesi olmasını istiyorsanız bu değeri true olarak ayarlamanız gerekir. Ayrıca, bu özelliğin değeri true ise yayınınızı live durumuna geçirebilmek için önce testing durumuna geçirmeniz gerekir. (Mülkün değeri false ise yayınınızda testing aşaması olamaz. Bu nedenle yayını doğrudan live durumuna geçirebilirsiniz.)

update a broadcast yaptığınızda, API isteğiniz part parametre değerinde contentDetails bölümünü içeriyorsa bu özellik ayarlanmalıdır. Ancak insert a broadcast yaptığınızda, özellik isteğe bağlıdır ve varsayılan değeri true olur.

Önemli: Yayın testing veya live durumundayken bu özellik güncellenemez.
contentDetails.monitorStream.broadcastStreamDelayMs unsigned integer
enableMonitorStream özelliğini true olarak ayarladıysanız canlı yayın gecikmesinin uzunluğunu bu özellik belirler.

update a broadcast yaptığınızda, API isteğiniz part parametre değerinde contentDetails bölümünü içeriyorsa bu özellik ayarlanmalıdır. Ancak insert a broadcast özelliği isteğe bağlıdır ve varsayılan değeri 0'tür. Bu değer, yayında bir yayın gecikmesi olmadığını gösterir. Not: Yayın testing veya live durumundayken bu özellik güncellenemez.
contentDetails.monitorStream.embedHtml string
İzleyici akışını oynatan bir oynatıcıyı yerleştiren HTML kodu.
contentDetails.enableEmbed boolean
Bu ayar, yayın videosunun yerleşik bir oynatıcıda oynatılıp oynatılamayacağını belirtir. Videoyu arşivlemeyi seçerseniz (enableArchive mülkünü kullanarak) bu ayar arşivlenen video için de geçerli olur.

update a broadcast yaptığınızda, API isteğiniz part parametre değerinde contentDetails bölümünü içeriyorsa bu özellik ayarlanmalıdır. Ancak insert a broadcast yaptığınızda, özellik isteğe bağlıdır ve varsayılan değeri true olur.

Not: Yayın testing veya live durumundayken bu özellik güncellenemez.
contentDetails.enableDvr boolean
Bu ayar, izleyicilerin videoyu izlerken DVR denetimlerine erişip erişemeyeceğini belirler. DVR kontrolleri, izleyicinin içeriği duraklatarak, geri sararak veya hızlı ileri alarak video oynatma deneyimini kontrol etmesini sağlar. Bu özelliğin varsayılan değeri true.

update a broadcast yaptığınızda, API isteğiniz part parametre değerinde contentDetails bölümünü içeriyorsa bu özellik ayarlanmalıdır. Ancak insert a broadcast özelliği isteğe bağlıdır ve varsayılan değeri true'tür.

Önemli: Yayın sona erdikten hemen sonra oynatmayı kullanılabilir hale getirmek isterseniz değeri true olarak ayarlamanız ve ayrıca enableArchive özelliğinin değerini de true olarak ayarlamanız gerekir. Ayrıca, yayın testing veya live durumundayken bu özellik güncellenemez.
contentDetails.recordFromStart boolean
Bu ayar, YouTube'un etkinliğin durumu "canlı" olarak değiştikten sonra yayını otomatik olarak kaydedip kaydetmeyeceğini belirtir.

Bu özelliğin varsayılan değeri true'dur ve yalnızca yayın kanalının canlı yayınlar için kayıtları devre dışı bırakmasına izin veriliyorsa false olarak ayarlanabilir.

Kanalınızın kayıtları devre dışı bırakma izni yoksa ve recordFromStart mülkü false olarak ayarlanmış bir yayın eklemeye çalışırsanız API bir Forbidden hatası döndürür. Buna ek olarak, kanalınız bu izne sahip değilse ve recordFromStart özelliğini false olarak ayarlamak için bir yayını güncellemeye çalışırsanız API modificationNotAllowed hatası verir.

update a broadcast yaptığınızda, API isteğiniz part parametre değerinde contentDetails bölümünü içeriyorsa bu özellik ayarlanmalıdır. Ancak insert a broadcast yaptığınızda, özellik isteğe bağlıdır ve varsayılan değeri true olur.

Önemli: Oynatma işleminin yayın sona erdikten hemen sonra kullanılabilmesini istiyorsanız enableDvr mülkünün değerini true olarak da ayarlamanız gerekir. Bu mülkün değerini true olarak ayarlar ancak aynı zamanda enableDvr özelliğini true olarak ayarlamazsanız arşivlenen videonun oynatılabilir hale gelmesi yaklaşık bir gün kadar gecikebilir.

Not: Yayın testing veya live durumundayken bu özellik güncellenemez.
contentDetails.enableClosedCaptions boolean
Bu özelliğin desteği 17 Aralık 2015'ten itibaren sonlandırılmıştır. Bunun yerine contentDetails.closedCaptionsType özelliğini kullanın.

Bu ayar, bu yayın için HTTP POST altyazı özelliğinin etkin olup olmadığını belirtir. Halihazırda bu özelliği kullanan API istemcileri için:
  • Özellik değerini true olarak ayarlamak, contentDetails.closedCaptionsType özelliğini closedCaptionsHttpPost olarak ayarlamaya eşdeğerdir.
  • Özellik değerini false olarak ayarlamak, contentDetails.closedCaptionsType özelliğini closedCaptionsDisabled olarak ayarlamaya eşdeğerdir.
contentDetails.closedCaptionsType string
Not: Bu özellik, contentDetails.enableClosedCaptions mülkünün yerini alır.

Bu özellik, yayınınızda altyazıların etkin olup olmadığını ve etkinse ne tür altyazılar sağladığınızı belirtir:
  • closedCaptionsDisabled: Canlı yayında altyazılar devre dışıdır.
  • closedCaptionsHttpPost: Altyazıları, HTTP POST aracılığıyla canlı yayınınızla ilişkili bir besleme URL'sine gönderirsiniz.
  • closedCaptionsEmbedded: Altyazılar, EIA-608 ve/veya CEA-708 biçimleri kullanılarak video akışına kodlanır.
contentDetails.projection string
Bu yayının projeksiyon biçimi. Özelliğin varsayılan değeri rectangular.

Bu özellik için geçerli değerler şunlardır:
  • 360
  • rectangular
contentDetails.enableLowLatency boolean
Bu yayının düşük gecikmeli akış için kodlanıp kodlanmayacağını belirtir. Düşük gecikmeli bir yayın, videonun yayını izleyen kullanıcılara görünür olması için gereken süreyi kısaltabilir ancak yayını izleyenler için çözünürlüğü de etkileyebilir.
contentDetails.latencyPreference string
Bu yayın için hangi gecikme ayarının kullanılacağını belirtir. Bu mülk, ultraLow'yi desteklemeyen enableLowLatency yerine kullanılabilir.

Düşük gecikmeli yayın, videonun yayını izleyen kullanıcılar tarafından görülebilmesi için gereken süreyi kısaltabilir ancak oynatmanın akıcılığı da etkilenebilir.

Ultra düşük gecikmeli yayın, videonun izleyiciler tarafından görülebilmesi için gereken süreyi daha da kısaltarak izleyicilerle etkileşimi kolaylaştırır ancak ultra düşük gecikme, altyazı veya 1080p'den yüksek çözünürlükleri desteklemez.

Bu mülk için geçerli değerler şunlardır:
  • normal
  • low
  • ultraLow
contentDetails.enableAutoStart boolean
Bağlı live stream cihazında video akışı başlattığınızda bu yayının otomatik olarak başlatılıp başlatılmayacağını belirtir.
contentDetails.enableAutoStop boolean
Bu yayının, kanal sahibi bağlı video akışında video aktarmayı durdurduktan yaklaşık bir dakika sonra otomatik olarak durup durmayacağını belirtir.
statistics object
statistics nesnesi, canlı yayınla ilgili istatistikleri içerir. Bu istatistiklerin değerleri yayın sırasında değişebilir ve yalnızca yayın devam ederken alınabilir.
statistics.totalChatCount unsigned long
Yayınla ilişkili canlı sohbet mesajlarının toplam sayısı. Yayın kullanıcı tarafından görülebiliyorsa, canlı sohbet özelliği etkinleştirilmişse ve en az bir mesaj içeriyorsa özellik ve değeri mevcuttur. Bu özelliğin, yayın sona erdikten sonra bir değer belirtmeyeceğini unutmayın. Bu nedenle, tamamlanmış bir canlı yayının arşivlenmiş videosundaki sohbet mesajlarının sayısı bu mülkte tanımlanmaz.
monetizationDetails object
monetizationDetails nesnesi, reklam otomasyonunun etkin olup olmadığı veya yayın içi reklam eklemenin gecikmeli olup olmadığı gibi yayının para kazanma ayrıntıları hakkında bilgi içerir.

monetizationDetails.cuepointSchedule object
cuepointSchedule nesnesi, yayın için reklam otomasyonu ayarlarını belirtir.
monetizationDetails.cuepointSchedule.enabled boolean
Bu değer, reklamların yayına otomatik olarak eklenip eklenmeyeceğini belirler. Değer true ise YouTube, yayına otomatik olarak ara reklam ekler. Reklam yayınlama planı, monetizationDetails.cuepointSchedule nesnesinde diğer alanların değerine göre belirlenir.
monetizationDetails.cuepointSchedule.pauseAdsUntil datetime
Bu değer, YouTube'un belirtilen tarih ve saate kadar videonun ortasında gösterilen reklamları yayına eklememesi gerektiğini belirtir. Değer, ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) biçiminde belirtilir. Reklamların duraklatılması için değer gelecekteki bir tarih ve saate ayarlanmalıdır. Alan değeri, zaman geçtikçe reklamların duraklatılmasını kaldırmak için yakın gelecekteki bir tarih ve saate de ayarlanabilir.
monetizationDetails.cuepointSchedule.scheduleStrategy string
Bu değer, YouTube'un işaret noktalarını planlamak için izlemesi gereken stratejiyi belirtir. Geçerli değerler:
  • CONCURRENT: İşaretçi noktaları tüm izleyiciler için aynı saatte planlanır
  • NON_CONCURRENT: İşaretçi noktaları, farklı izleyiciler için farklı zamanlarda planlanır. Bu yaklaşım, reklamların daha yüksek hızda gösterilmesini ve böylece uygun olduğunda izleyicilerin işaret noktaları alabilmesini sağlar.
monetizationDetails.cuepointSchedule.repeatIntervalSecs unsigned integer
Bu değer, yayın sırasında otomatik reklam ekleme işleminin gerçekleştiği aralığı saniye cinsinden belirtir. Örneğin, değer 300 ise YouTube, videonun ortasında gösterilen reklam işaret noktalarını beş dakikalık aralıklarla ekleyebilir.

Değerin, art arda gelen işaret noktalarının başlangıçları arasındaki zamanı belirttiğini unutmayın. Yani aralık, bir işaret noktasının sonundan diğerinin başına kadar ölçülmez.