Giriş
Bu belgede, 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ısı olan bağımsız bir veri öğesidir. YouTube'da canlı etkinlik oluşturmak ve yönetmek için YouTube Data API veya YouTube Content ID API'nin bir parçası olarak 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 nasıl canlı etkinlik oluşturup yöneteceğiniz açıklanmaktadır. Adımlar aşağıdaki aşamalara ayrılır:
1. aşama: Yayınınızı ayarlayın
1.1. adım: Yayınınızı oluşturun
Yayınlarınızı YouTube'un canlı etkinlik takvimine 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ıza test aşaması eklemek istiyorsanız (bu aşamada, yayınınızı diğer izleyiciler göremeden görüntüleyebilirsiniz)
contentDetails.monitorStream.enableMonitorStream
özelliğinitrue
,contentDetails.enableAutoStart
özelliğini isefalse
olarak ayarlamanız gerekir. Bu özelliklerin her ikisi için de varsayılan değerler şunlardır.Kaydettiğiniz yayından referans oluşturmak istiyorsanız yayının
contentDetails.recordFromStart
özelliğinitrue
olarak ayarlamanız gerekir. Kaydedilen videonun yayın bittikten hemen sonra oynatılabilmesini istiyorsanızcontentDetails.enableDvr
özelliğini detrue
olarak ayarlamanız gerekir. (Bu özelliklerin her ikisinin de varsayılan değeritrue
'dır.)Yayın durumunuz
contentDetails
veyaready
olduğu sürececreated
özelliklerinden herhangi birini güncelleyebilirsiniz.Yayın durumu
created
,ready
veyatesting
olduğu sürece yayının planlanan başlangıç ve bitiş zamanını güncelleyebilirsiniz.Yayın başlığı, açıklaması, gizlilik durumu ve 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ızstatus.privacyStatus
özellik değerini ihtiyaçlarınıza uygun olarakunlisted
veyaprivate
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 belirleyebilirsiniz.)
1.2. adım: Akışınızı oluşturun
liveStream
kaynağı, videonuzu YouTube'a iletmenizi sağlar ve ilettiğiniz içeriği tanımlar. Her yayın tam olarak bir akışla ilişkilendirilmelidir.
Etkinliğiniz için video akışı oluşturmak üzere liveStreams.insert
yöntemini çağırın. Akışınızı oluştururken aşağıda listelenen özelliklerin değerlerini 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ımda daha ayrıntılı olarak açıklanmıştır.
Ayrıca aşağıdaki özellikler için değerler ayarlayabilirsiniz:
snippet.description
- Yayın başlığı gibi, yayın açıklaması da yayın oluşturulduktan sonra güncellenebilir. Ne başlık ne de açıklama YouTube kullanıcılarına görünür.contentDetails.isReusable
- Akışın yeniden kullanılabilir olup olmadığını gösterir. Bu, akışın birden fazla yayına bağlanabileceği anlamına gelir. Bu özelliğin değeri, bir kanalınliveBroadcast
veliveStream
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
'yı kullanırsanız 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 akış 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 çıkarı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ı akışına bağlayın
liveBroadcast
ve liveStream
kaynaklarınızı oluşturduktan sonra liveBroadcasts.bind
yöntemini kullanarak bu iki kaynağı ilişkilendirmeniz gerekir. Bu işlem, YouTube'a ileteceğiniz video bitlerini söz konusu videonun etkinlik yayınıyla bağlar.
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 videosunu talep etmeniz gerekir. Bu işlem aşağıdaki adımlarda açıklanmıştır. Bu aşamada ele alınan tüm API çağrılarının YouTube Content ID API'de tanımlandığını unutmayın.
Adım 2.1: Öğ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. Gelecekteki API isteklerinde öğeyi tanımlamak için bu değere ihtiyacınız olacağından kodunuzun, id
değerini bu kaynaktan çıkarıp depolaması gerekir.
Adım 2.2: Öğenin sahipliğini tanımlayın
Bir öğenin sahiplik verileri, öğenin sahiplerini ve öğeye sahip oldukları bölgeleri tanımlar. YouTube, bu verileri kullanarak bir hak talebinde bulunulan videonun politikasının nerede ayarlanabileceğini belirler.
Örneğin, ABD'de bir etkinliği yayınlama hakkınız varsa ve başka bir yayıncı da Kanada'da aynı haklara sahipse yayınlanan video ve yayınlanan video ile eşleşen kullanıcı tarafından yüklenen videolar için farklı politikalar tanımlayabilirsiniz. Eşleşme politikanız, Amerika Birleşik Devletleri'ndeki eşleşen kullanıcı tarafından yüklenmiş videolara uygulanırken diğer sahibin politikası, Kanada'daki eşleşen videolara uygulanır.
Öğenin sahiplik bölgelerinizi tanımlamak için ownership.update
yöntemini çağırın.
Bu istekte assetId
parametresini 2.1 adımında depoladığınız id
olarak ayarlayın.
Adım 2.3: Öğenin eşleşme politikasını ayarlayın
Bir öğenin eşleşme politikası, kullanıcılar öğeyle ilişkili bir referansla eşleşen video yüklediğinde YouTube'un ne yapması gerektiğini açıklar. Bu durumda, eşleşen politika, YouTube'un canlı yayınınızla eşleşen yüklenmiş bir videoyu nasıl ele alması gerektiğini gösterir.
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: Videonuzla ilgili 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 belirlenen 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ımında elde ettiniz.videoId
: Bu, 1.1 adımında aldığınız yayın kimliğidir.policy
: Bu,policy
kaynağıdır. Mevcut bir politikayı, söz konusu 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ğeriaudiovisual
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 çıkarıp depolamalıdır. Bu değeri daha sonra işlenen videonuzdan referans oluşturmak için kullanırsınız.
2.5. adım: Yayın için reklam ayarlarını güncelleyin
İzleyiciler yayınınızı izlemeye başladığında bir yayın öncesi 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ı ortasında izlemeye başlasalar bile tüm izleyiciler yayını izlemeye başladıklarında bir 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ızın izleme akışını gösteren bir oynatıcı yerleştirirsiniz. İzleme akışı, yayınlanan videoyu YouTube izleyicilerine görüneceği şekilde önizlemenizi sağlayan özel bir akıştır.
Video yayınınızı yalnızca izleme akışı etkinse test edebileceğinizi unutmayın. Yayınların izleme akışları varsayılan olarak etkindir. Bir yayının izleme akışını, yayını oluştururken veya güncellerken contentDetails.monitorStream.enableMonitorStream özelliğini false
olarak ayarlayarak devre dışı bırakabilirsiniz.
3.1. adım: İzleme akışı oynatıcıyı yerleştirin
liveBroadcasts.list
yöntemini kullanarak yayınınızı alın ve contentDetails.streamDetails.monitorStreamEmbedHtml
özelliğinin değerini çıkarın. Bu değer, monitör yayınınızı gösteren bir YouTube oynatıcıyı 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.
3.3. 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 doğrulayın. Bu, YouTube sunucularının kodlayıcınızdan gelen verileri doğru şekilde aldığını gösterir.
3.4. adım: Yayınınızın durumunu 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'ye düzenli olarak istek göndermeniz 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 şekilde yapılandırılmadığını gösteriyorsa yayına 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 belirtiliyorsa akış 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 yöntemi çağırın.
liveBroadcasts.bind
API isteğindeid
parametresini 1.1. adımda elde edilenid
olarak ayarlayın. İsteğestreamId
parametresini eklemeyin. -
Video akışını silmek için
liveStreams.delete
yöntemini çağırın. İstek içindeid
parametresini 1.2 adımında elde edilenid
olarak ayarlayın. -
Yeni ve düzgün yapılandırılmış bir
liveStream
kaynağı oluşturmak için 1.2. adımı tekrarlayın. Ardından, yeni akışı yayınınızla bağlamak için 1.3 adımını, yeni akışı test etmek için ise 3.1-3.3 adımlarını 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 başlamasına neden olacağından bu özellikler test aşamasından önce true
olarak ayarlanamaz.
4. aşama: Yayın
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 iletmeye 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 doğrulayı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 yayın yapmaya başladıktan sonra bu geçişin tamamlanması için genellikle 5-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 durumu liveStarting
olur. Geçiş tamamlandıktan ve izleyiciler yayınınızı izlemeye başladıktan sonra durum live
olur.
Bu komutun aşağıdaki etkilerine dikkat edin:
- Yayın için izleme akışını etkinleştirdiyseniz (3.1. adıma bakın) 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 izleyiciler tarafından görülebilen yayın akışı, bu süre kadar geciktirilir.
4.4. adım: Yayınınıza reklam arası ekleyin
Bir iş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 kullanılabilirliği ve izleyicinin reklam görüntüleme 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 mola sırasında yayın akışını izlemeye devam eder.
Başlangıç kılavuzunda, canlı yayınlardaki reklam araları sırasında izleme deneyimi hakkında daha fazla bilgi verilmektedir.
5. aşama: Yayınınızı sonlandırın
Adım 5.1: Akışı durdurma
YouTube canlı yayın sisteminin testi tamamlandı.
5.2. adım: 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ği olarak, 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 tekrarı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 2.3. adımda belirlediğiniz eşleşme politikasına göre bu videoları işlemesini 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: Video durumunu öğrenmek için Data API'ye yoklama gönderin
Bir yayından veya yüklenen videodan referans oluşturabilmeniz için YouTube'un bu videoyu işlemesi gerekir. Videonun işleme sürecinin tamamlanıp tamamlanmadığını belirlemek için YouTube Data API'nin videos.list
yöntemini sorgulayın. part
parametresini status
, id
parametresini ise 1.1. adımda sakladığınız yayın kimliği olarak ayarlayın.
Yoklama isteğinize verilen API yanıtı bir video
kaynağı içerir.
Söz konusu 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şturma
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ği olarak 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 bu referansı sürekli olarak günceller. Ayrıca YouTube, yayın devam ederken kullanıcılar tarafından yüklenen ve eşleşen videoları da arar. Yayın başlamadan önce referans oluşturmanın, yayında kaydı otomatik olarak etkinleştireceğini ve referans oluşturulduktan sonra kaydın devre dışı bırakılamayacağını unutmayın.
Yayınınıza canlı Content ID teslimini etkinleştirmek için 2.4. adımda videonuzda hak talebinde bulunduktan sonra 6.2. adımda açıklanan işlemleri deneyin.
İş ortağı hesabınız, canlı yayın gerçekleşmeden önce bu yayın için referans oluşturmak üzere onaylanmadı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.