Bir Yayının Hayatı

Giriş

Bu dokümanda, YouTube Live Streaming API ve YouTube Content ID API kullanılarak oluşturulan ve yönetilen bir YouTube canlı yayınının yaşam döngüsü açıklanmaktadır.

Kaynaklar ve kaynak türleri

Başlangıç kılavuzunda açıklandığı gibi, kaynak, benzersiz tanımlayıcıya sahip bağımsız bir veri varlığıdır. YouTube'da canlı etkinlikler oluşturmak ve yönetmek için YouTube Data API veya YouTube Content ID API kapsamında tanımlanan çeşitli kaynak türlerini kullanırsınız. YouTube Live Streaming API başlığı altında listelenen kaynaklar, teknik olarak diğer API'lerde tanımlanır ancak yalnızca canlı yayınlarda kullanıldıkları için ayrı olarak listelenir.

YouTube Live Streaming API kaynakları

YouTube Data API kaynakları

YouTube Content ID API kaynakları

Canlı yayın oluşturma ve yönetme

Aşağıdaki adımlarda, YouTube'da canlı etkinlik oluşturma ve yönetme işlemleri açıklanmaktadır. Adımlar aşağıdaki aşamalara ayrılmıştır:

  1. Yayınınızı ayarlama
  2. İçeriğinizle ilgili hak talebinde bulunma
  3. Test
  4. Anons
  5. Yayınınızı sonlandırma
  6. Referans oluşturma

1. aşama: Yayınınızı ayarlayın

1.1. adım: Canlı yayınınızı oluşturun

Yayınınızı YouTube'un canlı etkinlikler programına eklemek için liveBroadcasts.insert yöntemini çağırın. Eklediğiniz liveBroadcast kaynağı, aşağıda listelenen özelliklerin değerlerini tanımlamalıdır.

Lütfen yayınınızı ayarlarken aşağıdaki yönergeleri göz önünde bulundurun:

  • Yayınınız için bir test aşaması olmasını istiyorsanız, diğer izleyiciler yayını göremeden video yayınınızı görüntüleyebileceğiniz zaman contentDetails.monitorStream.enableMonitorStream özelliğini true ve contentDetails.enableAutoStart özelliğini false olarak ayarlamanız gerekir. Bu özelliklerin her ikisi için de varsayılan değerler şunlardır.

  • Kaydedilen yayınınızdan referans oluşturmak istiyorsanız yayının contentDetails.recordFromStart özelliğini true olarak ayarlamanız gerekir. Kaydedilen videonun yayın bittikten hemen sonra oynatılabilmesini istiyorsanız contentDetails.enableDvr özelliğini de true olarak ayarlamanız gerekir. (Bu özelliklerin her ikisinin de varsayılan değeri true'dır.)

  • Yayınınızın görüntülenebileceği bölgeleri kısıtlamak istiyorsanız contentDetails.availabilityConfig özelliğini ayarlayabilirsiniz. Bu özellik, belirli bölgeleri engellemenize veya kullanılabilirliği tanımlanmış bir bölge listesiyle sınırlamanıza olanak tanır. Bölgesel stok durumu için zaman aralıkları da belirtebilirsiniz.

  • İsteğe bağlı olarak, snippet.categoryId özelliğini kullanarak yayının video kategorisini belirtebilirsiniz. Belirtilmezse kategori varsayılan olarak Entertainment olur.

  • Yayınınızın durumu created veya ready olduğu sürece contentDetails özelliklerinden herhangi birini güncelleyebilirsiniz.

  • Yayın durumu created, ready veya testing olduğu sürece yayının planlanan başlangıç zamanını ve planlanan bitiş zamanını güncelleyebilirsiniz.

  • Yayının başlığı, açıklaması, kategorisi ve gizlilik durumu ile yayının video kaynağının parçası olan diğer meta veri alanları dilediğiniz zaman güncellenebilir.

    Not: Videonuzun yalnızca belirli YouTube kullanıcıları tarafından görüntülenebilmesini istiyorsanız status.privacyStatus özellik değerini ihtiyaçlarınıza uygun olarak unlisted veya private olarak ayarlayın.

API yanıtını işleme

liveBroadcasts.insert yöntemini çağırdığınızda API yanıtı, oluşturduğunuz liveBroadcast kaynağını içerir. Kodunuz, bu kaynaktan id değerini ayıklayıp depolamalıdır. Gelecekteki API isteklerinde yayını tanımlamak için bu değere ihtiyacınız olacaktır. (Aynı kimliği kullanarak liveBroadcast kaynağına karşılık gelen video kaynağını da tanımlayabilirsiniz.)

1.2. adım: Akışınızı oluşturun

liveStream kaynağı, videonuzu YouTube'a aktarmanıza olanak tanır ve aktardığınız içeriği açıklar. Her yayının tam olarak bir akışla ilişkilendirilmesi gerekir.

Etkinliğiniz için video akışı oluşturmak üzere liveStreams.insert yöntemini çağırın. Akışınızı oluştururken aşağıdaki özellikler için değerler ayarlamanız gerekir:

Yayın başlığı hariç bu değerler, yayın oluşturulduktan sonra güncellenemez. Bunları değiştirmeniz gerekiyorsa bu adımı tekrarlayarak farklı bir akış oluşturmanız gerekir. Bu işlem, bu belgenin ilerleyen kısımlarındaki 3.5 adımında daha ayrıntılı olarak ele alınmıştır.

Ayrıca aşağıdaki özellikler için değerler ayarlama seçeneğiniz de vardır:

  • snippet.description: Yayın başlığı gibi yayın açıklaması da yayın oluşturulduktan sonra güncellenebilir. Başlık ve açıklama, YouTube kullanıcılarına görünmez.
  • [contentDetails.isReusable](

    /youtube/data/live/reference/rest/v3/liveStreams#contentDetails.isReusable)

    Akışın yeniden kullanılabilir olup olmadığını gösterir. Yeniden kullanılabilir akışlar birden fazla yayına bağlanabilir. Bu özelliğin değeri, bir kanalın liveBroadcast ve liveStream kaynakları arasında bire çok veya bire bir ilişkisi olup olmadığını etkili bir şekilde belirler:

    • Özelliğin varsayılan değeri olan true değerini kullanırsanız bir kanalın tüm yayınları için aynı liveStream kaynağını kullanabilirsiniz. Bu nedenle, bu adımı (1.2) her yayın için tekrarlamanız gerekmez. Bunun yerine, sonraki yayınlarda akış kimliğini yeniden kullanabilirsiniz.
    • Özellik değerini false olarak ayarlarsanız her yayın için yeni bir yayın oluşturmanız gerekir.

API isteğini yayınladıktan sonra API yanıtı, oluşturduğunuz liveStream kaynağını içerir. Kodunuz, bu kaynaktan id değerini ayıklayıp depolamalıdır. Gelecekteki API isteklerinde akışı tanımlamak için bu değere ihtiyacınız olacaktır.

1.3. adım: Yayınınızı canlı yayınına bağlayın

liveBroadcast ve liveStream kaynaklarınızı oluşturduktan sonra liveBroadcasts.bind yöntemini kullanarak ikisini ilişkilendirmeniz gerekir. Bu işlem, YouTube'a ileteceğiniz video bitlerini, söz konusu videonun etkinlik yayınıyla ilişkilendirir.

liveBroadcasts.bind yöntemini çağırırken id parametresini 1.1 adımında elde edilen yayın kimliğine, streamId parametresini ise 1.2 adımında elde edilen yayın kimliğine ayarlayın.

2. aşama: İçeriğinizi talep edin

Yayın sırasında reklam göstermek istiyorsanız etkinlik başlamadan önce yayın videosu için hak talebinde bulunmanız gerekir. Yayın, videosu ve reklamlarını ayarlamak için aşağıdaki adımları uygulayın. Yayın sahibinin kanalının reklam göstermeye uygun olması gerektiğini unutmayın.

Bu aşamada ele alınan tüm API çağrılarının YouTube Content ID API'de tanımlandığını unutmayın.

2.1. adım: Öğe oluşturun

asset kaynağı, bir fikri mülkiyet parçasını temsil eder. Bu durumda öğe, yayınınızdır. Öğenizi oluşturmak için assets.insert yöntemini çağırın.

API yanıtı, oluşturduğunuz asset kaynağını içerir. Kodunuz, bu kaynaktan id değerini ayıklayıp depolamalıdır. Gelecekteki API isteklerinde öğeyi tanımlamak için bu değere ihtiyacınız olacaktır.

2.2. adım: Öğenin sahipliğini tanımlayın

Bir öğenin sahiplik verileri, öğenin sahiplerini ve öğeye sahip oldukları bölgeleri tanımlar. YouTube, hak talebinde bulunulan bir videonun politikasını sahibinin nerede belirleyebileceğini saptamak için bu verileri kullanır.

Örneğin, bir etkinliği ABD'de yayınlama hakkına sahipseniz ve başka bir yayıncı da aynı haklara Kanada için sahipse her ikiniz de yayın videosu ve yayın videosuyla eşleşen, kullanıcılar tarafından yüklenen videolar için farklı politikalar tanımlayabilirsiniz. Eşleşme politikanız, ABD'de kullanıcılar tarafından yüklenen eşleşen videolara uygulanır. Diğer sahibin politikası ise Kanada'daki eşleşen videolara uygulanır.

Öğenin sahiplik bölgelerini tanımlamak için ownership.update yöntemini çağırın. Bu istekte, assetId parametresini 2.1. adımda depoladığınız id değerine ayarlayın.

2.3. adım: Öğenin eşleşme politikasını ayarlayın

Bir öğenin eşleşme politikası, bir kullanıcı öğeyle ilişkili bir referansla eşleşen bir video yüklediğinde YouTube'un ne yapması gerektiğini açıklar. Bu durumda eşleşme politikası, YouTube'un canlı yayınınızla eşleşen yüklenmiş bir videoyu nasıl ele alması gerektiğini belirtir.

Not: Yayın videonuzdan referans oluşturmayı ve bu referansı, yayınınızla eşleşen kullanıcı tarafından yüklenen videoları belirlemek için kullanmayı planlıyorsanız eşleşme politikası belirlemeniz gerekir. Aksi halde bu adımı atlayabilirsiniz.

Eşleşme politikasını ayarlamak için öncelikle uygulamak istediğiniz politikayı belirlemeniz gerekir. policies.list yöntemini çağırarak mevcut politikaların listesini alabilir veya policies.insert yöntemini çağırarak yeni bir politika tanımlayabilirsiniz. Her iki durumda da uygulamak istediğiniz politikanın id yakalamanız gerekir.

Politikayı belirledikten sonra assetMatchPolicy.update yöntemini çağırın. Bu istekte assetId parametresini, 2.1 adımında depoladığınız id olarak ayarlayın.

2.4. adım: Videonuz için hak talebinde bulunun

Bu adımda, yayınlayacağınız videoyu 2.1 adımında oluşturduğunuz öğeye bağlayan bir hak talebi oluşturursunuz. Hak talebi, yalnızca yayın videonuz için geçerli olan bir politika belirler. (Yayın videonuzla eşleşen kullanıcı tarafından yüklenen videolar, önceki adımda ayarlanan eşleşme politikası kapsamındadır.)

Talep oluşturmak için claims.insert yöntemini çağırın. Eklediğiniz claim kaynağında aşağıdaki özelliklerin değerlerini ayarlamanız gerekir:

  • assetId: Bu değeri 2.1. adımda elde ettiniz.
  • videoId: Bu, 1.1 adımında aldığınız yayın kimliğidir.
  • policy: Bu bir policy kaynağıdır. Mevcut bir politikayı, ilgili kaynağın id özelliğini mevcut politikanın kimliğine ayarlayarak uygulayabilirsiniz. Önceki adımda, mevcut bir politikanın kimliğinin nasıl alınacağı açıklanmaktadır.
  • contentType – Bu değeri audiovisual olarak ayarlayın.

API yanıtını işleme

Hak talebini eklediğinizde API yanıtı, oluşturduğunuz claim kaynağını içerir. Kodunuz, bu kaynaktan id değerini ayıklayıp depolamalıdır. Bu değeri daha sonra işlenmiş videonuzdan referans oluşturmak için kullanırsınız.

2.5. adım: Yayının reklam ayarlarını güncelleyin

İzleyiciler yayınınızı izlemeye başladığında videodan önce gösterilen reklam yayınlamak veya yayınınızdaki aralarda reklam yayınlamak istiyorsanız videonuzun reklam seçeneklerini ayarlamanız gerekir.

  • Yayınınıza yayın öncesi reklamları etkinleştirirseniz yayınınızı izlemeye başlayan tüm izleyiciler, yayının ortasında izlemeye başlasalar bile reklam görür.
  • Yayınınıza ara reklamları etkinleştirirseniz yayın sırasında reklam işaretleri ekleyebilirsiniz.

Reklamları etkinleştirmek için videoAdvertisingOptions.update yöntemini çağırın. İsteğinizde videoId parametresini, 1.1 adımında aldığınız yayın id olarak ayarlayın. Etkinleştirmek istediğiniz reklam biçimlerini (preroll, midroll veya postroll) belirlemek için videoAdvertisingOption kaynağının adFormats[] özelliğini kullanın.

3. aşama: Test

Bu aşamada, izleme deneyimini test edebilmeniz için yayınınıza ait izleme akışını gösteren bir oynatıcı yerleştirirsiniz. İzleme akışı, yayın videosunun YouTube Viewers'a nasıl görüneceğini önizlemenize olanak tanıyan özel bir akıştır.

Video yayınınızı yalnızca monitör akışı etkinse test edebileceğinizi unutmayın. Yayınların izleme akışları varsayılan olarak etkindir. Bir yayının izleme yayınını devre dışı bırakmak için yayını oluştururken veya güncellerken contentDetails.monitorStream.enableMonitorStream özelliğini false olarak ayarlayabilirsiniz.

Adım 3.1: Monitör yayın oynatıcısı yerleştirme

liveBroadcasts.list yöntemini kullanarak yayınınızı alın ve contentDetails.streamDetails.monitorStreamEmbedHtml özelliğinin değerini ayıklayın. Bu değer, izleme yayınınızı gösteren bir YouTube oynatıcı yerleştirmek için gereken HTML'yi içerir.

3.2. adım: Videonuzu başlatın

Video akışınızda video iletmeye başlayın.

Adım 3.3: Video akışınızın etkin olduğunu onaylayın

Yayınınızla ilişkili liveStream kaynağını almak için liveStreams.list yöntemini çağırın. status.streamStatus özelliğinin değerinin active olduğunu doğrulayın. Bu değer, YouTube sunucularının kodlayıcınızdan verileri doğru şekilde aldığını gösterir.

3.4. adım: Yayın durumunuzu test olarak değiştirin

Yayın durumunu güncellemek için liveBroadcasts.transition yöntemini çağırın. id parametre değerini 1.1 adımında elde edilen yayın kimliği olarak, broadcastStatus parametre değerini ise testing olarak ayarlayın.

liveBroadcasts.transition yöntemini çağırdıktan sonra bu geçişin tamamlanması birkaç saniye, hatta bir dakika kadar sürebilir. Bu süre zarfında, yayın durumunu kontrol etmek için API'yi yoklamanız gerekir. Geçiş tamamlanana kadar yayının durumu testStarting olur. Geçiş tamamlandığında durum testing olur.

3.5. adım: Testinizi tamamlama

Testiniz sorunsuz geçtiyse 4. aşamaya geçebilirsiniz. Ancak bazı durumlarda daha fazla test yapmanız gerekebilir. Örneğin, testiniz video akışının doğru yapılandırılmadığını gösteriyorsa, yayınınıza devam etmeden önce bu durumu düzeltmeniz gerekir.

Video akışı doğru şekilde yapılandırılmamışsa mevcut akışın bağlantısını kaldırmanız (ve silmeniz) ve yeni bir akış oluşturmanız gerekir. Örneğin, yanlış video biçimi belirtilmişse yayın doğru şekilde yapılandırılmamış olabilir.

  1. Video akışının bağlantısını kaldırmak için 1.3 adımındaki liveBroadcasts.bind yöntemini çağırın. API isteğinde id parametresini 1.1 adımında elde edilen id değerine ayarlayın. İsteğe streamId parametresini eklemeyin.

  2. Video akışını silmek için liveStreams.delete yöntemini çağırın. İstekte, id parametresini 1.2. adımda elde edilen id değerine ayarlayın.

  3. Yeni ve doğru şekilde yapılandırılmış bir liveStream kaynağı oluşturmak için 1.2 adımını tekrarlayın. Ardından, yeni yayını canlı yayınınıza bağlamak için 1.3 adımını, yeni yayını test etmek için de 3.1 ile 3.3 arasındaki adımları tekrarlayın.

3.6. adım: autoStart ve autoStop özelliklerini etkinleştirin

Test aşamanızı başarıyla tamamladıktan sonra, yayın başlamadan önce yayının contentDetails.enableAutoStart ve contentDetails.enableAutoStop özelliklerini true olarak ayarlayabilirsiniz. Test, yayının gerçekten başlamasına neden olacağından bu özellikler test aşamasından önce true olarak ayarlanamaz.

4. aşama: Yayınlama

Bu aşamada, yayın videonuz kitleniz tarafından görüntülenebilir.

4.1. adım: Videonuzu başlatın

Video akışınızda video aktarmaya başlayın.

4.2. adım: Video akışınızın etkin olduğunu onaylayın

Yayınla ilişkili liveStream kaynağını almak için liveStreams.list yöntemini çağırın. status.streamStatus özelliğinin değerinin active olduğunu onaylayın. Bu, YouTube sunucularının kodlayıcınızdan gelen verileri doğru şekilde aldığını gösterir.

4.3. adım: Yayınınızın durumunu canlı olarak değiştirin

Önemli: Bu adım, videonuzu kitleniz için görünür hale getirir.

Yayın durumunu güncellemek için liveBroadcasts.transition yöntemini çağırın. id parametre değerini 1.1 adımında elde edilen yayın kimliği olarak, broadcastStatus parametre değerini ise live olarak ayarlayın.

liveBroadcast kaynağının contentDetails.enableAutoStart özelliğini true olarak ayarlarsanız liveBroadcasts.transition yöntemini çağırmanız gerekmez.

Bu API çağrısını yaptıktan sonra veya contentDetails.enableAutoStart özelliğini true olarak ayarladıysanız akışa başladıktan sonra genellikle bu geçişin tamamlanması için 5 ila 10 saniye beklemeniz gerekir. Geçiş işlemi bir dakika kadar sürebilir. Bu süre zarfında, yayının durumunu kontrol etmek için API'yi yoklamanız gerekir. Geçiş tamamlanana kadar yayının durumu liveStarting olur. Geçiş tamamlandığında durum live olur ve izleyiciler yayınınızı izleme akışınızdaki o noktadan itibaren izleyebilir.

Bu komutun aşağıdaki etkilerini göz önünde bulundurun:

  • Yayın için izleme akışını etkinleştirdiyseniz (3.1. adımı inceleyin) izleme akışını yerleştirilmiş bir oynatıcıda görebilirsiniz.
  • Yayın için contentDetails.streamDetails.broadcastStreamDelayMs özelliğine bir değer ayarladıysanız diğer izleyicilerin görebileceği yayın akışı, bu süre kadar geciktirilir.

4.4. adım: Yayınınıza reklam arası ekleyin

İşaret noktası eklemek için liveBroadcasts.cuepoint yöntemini çağırın. İşaret noktası, reklam arası başlatabilir. İstek gövdesinde sağlanan cuepoint kaynağında, durationSecs özelliğini göstermek istediğiniz aranın süresine (saniye cinsinden) ayarlayın. (Varsayılan değer 30'dır.)

Bu sırada YouTube, reklam işaret noktası eklendiğinde yayını izleyen tüm izleyiciler için video oynatıcıda bir reklam oynatmaya çalışır. Bir reklamın oynatılıp oynatılmayacağı; reklamın uygunluğu ve izleyicinin reklam izleme geçmişi gibi çeşitli faktörlere bağlıdır. Reklam arası gösterilen izleyiciler, reklam arası sona erdiğinde yayına geri döner. Reklam gösterilmeyen izleyiciler ise ara sırasında yayın akışını izlemeye devam eder.

Başlangıç kılavuzunda, canlı yayın reklam arası sırasında izleme deneyimi hakkında daha fazla bilgi verilmektedir.

5. aşama: Yayınınızı sonlandırın

5.1. adım: Canlı yayını durdurun

YouTube canlı yayın sisteminin testini tamamladınız.

Adım 5.2: Yayın durumunuzu tamamlandı olarak değiştirin

Yayın yapmayı durdurmaya hazır olduğunuzda, yayının durumunu güncellemek için API'nin liveBroadcasts.transition yöntemini çağırın. id parametre değerini 1.1 adımında elde edilen yayın kimliğine, broadcastStatus parametre değerini ise complete olarak ayarlayın.

Yayın için contentDetails.recordFromStart ve contentDetails.enableDvr özelliklerini true olarak ayarladıysanız canlı etkinlik sona erdiğinde kitleniz canlı etkinliğin oynatılmasını hemen izleyebilir.

6. aşama: Referans oluşturma

Canlı kayıt tamamlandıktan sonra kaydedilen videodan referans oluşturabilirsiniz. Bu işlem, YouTube'a yayınla eşleşen, kullanıcı tarafından yüklenen videoları aramasını ve bunları 2.3. adımda belirlediğiniz eşleşme politikasına göre ele almasını söyler.

Önemli: Referans oluşturmak için yayının contentDetails.recordFromStart özelliğini true olarak ayarlamış olmanız gerekir.

6.1. adım: Videonun durumu için Data API'yi sorgulayın

Bir yayından veya yüklenen videodan referans oluşturabilmeniz için YouTube'un bu videoyu işlemesi gerekir. Videonun işlenmesinin tamamlanıp tamamlanmadığını belirlemek için YouTube Data API'nin videos.list yöntemini çağırın. part parametresini status, id parametresini ise 1.1. adımda kaydettiğiniz yayın kimliği olarak ayarlayın.

Yoklama isteğinize verilen API yanıtı bir video kaynağı içerir. Bu kaynağın status.uploadStatus özelliğinin değeri processed olduğunda 6.2. adıma geçin.

6.2. adım: İşlenen videodan referans oluşturun

Referansınızı oluşturmak için Content ID API'nin references.insert yöntemini çağırın ve claimId parametresini 2.4. adımda depoladığınız hak talebi kimliğine ayarlayın.

Canlı Content ID Teslimi

Bazı YouTube iş ortakları, yayınları testing durumuna geçmeden önce referans oluşturabilir ancak bu özellik tüm iş ortakları tarafından kullanılamaz. Bu akışta YouTube, canlı etkinliğinizin yayın akışından referansı oluşturur ve yayın devam ederken sürekli olarak günceller. Ayrıca YouTube, yayın devam ederken kullanıcılar tarafından yüklenen eşleşen videoları da arar. Yayın başlamadan önce referans oluşturulduğunda yayının kaydı otomatik olarak başlatılır ve referans oluşturulduktan sonra kayıt kapatılamaz.

Yayınınızda canlı Content ID yayınını etkinleştirmek için 2.4 adımında videonuzla ilgili hak talebinde bulunduktan sonra 6.2 adımında açıklanan işlemleri deneyin. İş ortağı hesabınız, canlı yayın gerçekleşmeden önce canlı yayın için referans oluşturma onayı almadıysa API, fingerprintingNotAllowed hatası döndürür. Bu durumda, referansı oluşturmadan önce yukarıdaki 6.1 ve 6.2 numaralı adımlarda açıklandığı gibi yayınınızın tamamlanmasını beklemeniz gerekir.