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:
- Yayınınızı ayarlama
- İçeriğinizle ilgili hak talebinde bulunma
- Test
- Anons
- Yayınınızı sonlandırma
- 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ğinitruevecontentDetails.enableAutoStartözelliğinifalseolarak 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ğinitrueolarak ayarlamanız gerekir. Kaydedilen videonun yayın bittikten hemen sonra oynatılabilmesini istiyorsanızcontentDetails.enableDvrözelliğini detrueolarak ayarlamanız gerekir. (Bu özelliklerin her ikisinin de varsayılan değeritrue'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 olarakEntertainmentolur.Yayınınızın durumu
createdveyareadyolduğu sürececontentDetailsözelliklerinden herhangi birini güncelleyebilirsiniz.Yayın durumu
created,readyveyatestingolduğ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
videokaynağı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ızstatus.privacyStatusözellik değerini ihtiyaçlarınıza uygun olarakunlistedveyaprivateolarak 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
liveBroadcastveliveStreamkaynakları arasında bire çok veya bire bir ilişkisi olup olmadığını etkili bir şekilde belirler:- Özelliğin varsayılan değeri olan
truedeğerini kullanırsanız bir kanalın tüm yayınları için aynıliveStreamkaynağı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
falseolarak ayarlarsanız her yayın için yeni bir yayın oluşturmanız gerekir.
- Özelliğin varsayılan değeri olan
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 birpolicykaynağıdır. Mevcut bir politikayı, ilgili kaynağınidö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ğeriaudiovisualolarak 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.
-
Video akışının bağlantısını kaldırmak için 1.3 adımındaki
liveBroadcasts.bindyöntemini çağırın. API isteğindeidparametresini 1.1 adımında elde edileniddeğerine ayarlayın. İsteğestreamIdparametresini eklemeyin. -
Video akışını silmek için
liveStreams.deleteyöntemini çağırın. İstekte,idparametresini 1.2. adımda elde edileniddeğerine ayarlayın. -
Yeni ve doğru şekilde yapılandırılmış bir
liveStreamkaynağı 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.