İlgilendiğiniz DAI çözümünü seçin
Tam kapsamlı DAI
Bu kılavuzda, IMA CAF DAI SDK'sı kullanılarak DAI akışının nasıl oynatılacağı gösterilmektedir. Tamamlanmış bir örnek entegrasyonu görüntülemek veya takip etmek istiyorsanız örneği indirin.
Bu kılavuzu kullanmadan önce Chromecast Uygulama Çerçevesi'nin Web Alıcı protokolünü inceleyin. Bu kılavuzda, mesaj alıcısı ve mediaInformation
nesneleri gibi CAF alıcı kavramlarıyla ilgili temel düzeyde bilgi sahibi olduğunuz ve CAF gönderenini taklit etmek için Cast Komut ve Kontrol Aracı'nı kullanma konusunda bilgi sahibi olduğunuz varsayılmaktadır.
IMA DAI'yi kullanmak için bir Ad Manager 360 hesabınız olmalıdır. Ad Manager hesabınız varsa daha fazla bilgi için hesap yöneticinizle iletişime geçin. Ad Manager'a kaydolma hakkında bilgi edinmek için Ad Manager Yardım Merkezi'ni ziyaret edin.
Diğer platformlarla entegrasyon veya IMA istemci tarafı SDK'larını kullanma hakkında bilgi edinmek için Interactive Media Ads SDK'ları başlıklı makaleyi inceleyin.
CAF DAI'ye genel bakış
IMA CAF DAI SDK'sını kullanarak DAI'yi uygulamak, bu kılavuzda gösterildiği gibi iki ana bileşenden oluşur:
StreamRequest
: Google'ın reklam sunucularına bir akış isteği tanımlayan bir nesne. Akış istekleri iki ana türe ayrılır:LiveStreamRequest
: Öğe anahtarı, isteğe bağlı API anahtarı ve diğer isteğe bağlı parametreleri belirtir.VODStreamRequest
: İçerik Kaynağı Kimliği, Video Kimliği, isteğe bağlı API anahtarı ve diğer isteğe bağlı parametreleri belirtir.
StreamManager
: Video akışı ile IMA DAI SDK'sı arasındaki iletişimi yöneten bir nesne (ör. izleme ping'lerini gönderme ve yayın etkinliklerini yayıncıya yönlendirme).
Ön koşullar
- Kayıtlı bir test cihazı olan Cast Developer Console hesabı.
- Cast Developer Console'unuza kayıtlı ve bu kılavuzda sağlanan kodu barındıracak şekilde değiştirilebilen barındırılan bir web alıcı uygulaması.
- Web alıcı uygulamanızı kullanacak şekilde yapılandırılmış bir gönderen uygulaması. Bu örnekte, gönderen olarak Cast Komut ve Kontrol Aracı kullanılmaktadır.
Gönderenin MediaInfo nesnelerini yapılandırma
Öncelikle, gönderen uygulamanızın MediaInfo nesnesini aşağıdaki alanları içerecek şekilde yapılandırın:
contentId
|
Bu medya öğesinin benzersiz tanımlayıcısıdır. | |
contentUrl
|
DAI StreamRequest herhangi bir nedenle başarısız olursa yüklenecek yedek akış URL'si | |
streamType
|
Canlı yayınlar için bu değer "LIVE" olarak ayarlanmalıdır. VOD yayınlar için bu değer "BUFFERED" olarak ayarlanmalıdır. | |
customData
|
assetKey
|
Yalnızca canlı yayınlar. Yüklenecek canlı yayını tanımlar |
contentSourceId
|
Yalnızca VOD akışları. İstenen akışı içeren medya feed'ini tanımlar. | |
videoId
|
Yalnızca VOD akışları. Belirtilen medya feed'inde istenen yayını tanımlar. | |
ApiKey
|
IMA DAI SDK'sından akış URL'sini almak için gerekebilecek isteğe bağlı bir API anahtarı | |
senderCanSkip
|
Gönderen cihazın atlama düğmesi gösterip gösteremediğini ve böylece atlanabilir reklam desteğini etkinleştirip etkinleştiremediğini alıcıya bildiren bir boole değeri |
Yayınlama komut ve kontrol aracında bu değerleri yapılandırmak için Medya Yükle sekmesini tıklayın ve özel yükleme isteği türünü LOAD
olarak ayarlayın. Ardından, metin alanındaki JSON verilerini aşağıdaki JSON nesnelerinden biriyle değiştirin:
CANLI
{
"media": {
"contentId": "bbb",
"contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
"streamType": "LIVE",
"customData": {
"assetKey": "sN_IYUG8STe1ZzhIIE_ksA",
"ApiKey": "",
"senderCanSkip": true
}
},
"credentials": "testCredentials"
}
Seç-izle
{
"media": {
"contentId": "tos",
"contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/tos.m3u8",
"streamType": "BUFFERED",
"customData": {
"contentSourceId": "2548831",
"videoId": "tears-of-steel",
"ApiKey": "",
"senderCanSkip": true
}
},
"credentials": "testCredentials"
}
Bu özel yükleme isteği nesnesi, aşağıdaki adımları test etmek için alıcıya gönderilebilir.
Temel bir CAF alıcısı oluşturma
CAF SDK Temel Alıcı Kılavuzu'nu izleyerek temel bir web alıcısı oluşturun.
Alıcının kodu aşağıdaki gibi görünmelidir:
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js">
</script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
cast.framework.CastReceiverContext.getInstance().start();
</script>
</body>
</html>
IMA DAI SDK'sını içe aktarma ve Oynatıcı Yöneticisi'ni alma
Komut dosyası CAF'yi yükledikten hemen sonra, CAF için IMA DAI SDK'sını web alıcınıza içe aktarmak üzere bir komut dosyası etiketi ekleyin. CAF DAI SDK'sı her zaman kullanılabilir olduğundan belirli bir sürüm ayarlamanıza gerek yoktur. Ardından, alıcıyı başlatmadan önce alıcı bağlamını ve oynatıcı yöneticisini, aşağıdaki komut dosyası etiketinde sabit olarak saklayın.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
castContext.start();
</script>
</body>
</html>
IMA Akış Yöneticisi'ni başlatma
CAF DAI SDK'sının StreamManager'ını başlatın.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
castContext.start();
</script>
</body>
</html>
Yük mesajı tutucusunu oluşturma
CAF DAI SDK'sı, akış istekleri yapmak ve içerik URL'sini nihai DAI akışıyla değiştirmek için CAF yük mesaj müdahalecisini kullanır.
Mesaj tutucu, reklam aralarını ayarlama, yayını isteme ve mevcut contentURL
'yi değiştirme işlemlerini gerçekleştiren streamManager.requestStream() işlevini çağırır.
Yalnızca bir mesaj yükleme engelleyici olabilir. Bu nedenle, uygulamanız engelleyicinin kullanılmasını gerektiriyorsa tüm özel işlevleri aynı geri çağırma işlevine dahil etmeniz gerekir.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
const getStreamRequest = (request) => null;
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, (request) => {
return streamManager.requestStream(request, getStreamRequest(request))
.then((request) => {
this.broadcast('Stream request successful.');
return Promise.resolve(request);
})
.catch((error) => {
this.broadcast('Stream request failed.');
return Promise.resolve(request);
});
});
castContext.start();
</script>
</body>
</html>
Akış isteğini oluşturma
CAF DAI entegrasyonunuzu tamamlamak için gönderenin mediaInfo
nesnesine dahil edilen verileri kullanarak akış isteğinizi oluşturmanız gerekir.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
const getStreamRequest = (request) => {
const imaRequestData = request.media.customData;
let streamRequest = null;
if (imaRequestData.assetKey) {
// Live stream
streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
streamRequest.assetKey = imaRequestData.assetKey;
} else if (imaRequestData.contentSourceId) {
// VOD stream
streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
streamRequest.contentSourceId = imaRequestData.contentSourceId;
streamRequest.videoId = imaRequestData.videoId;
}
if (streamRequest && imaRequestData.ApiKey) {
streamRequest.ApiKey = imaRequestData.ApiKey;
}
if (streamRequest && imaRequestData.senderCanSkip) {
streamRequest.senderCanSkip = imaRequestData.senderCanSkip;
}
return streamRequest;
};
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, (request) => {
return streamManager.requestStream(request, getStreamRequest(request))
.then((request) => {
return Promise.resolve(request);
})
.catch((error) => {
this.broadcast('Stream request failed.');
return Promise.resolve(request);
});
});
castContext.start();
</script>
</body>
</html>
Artık Google'ın CAF DAI SDK'sı ile DAI akışları isteyebilir ve oynatabilirsiniz. Daha gelişmiş SDK özellikleri hakkında bilgi edinmek için diğer kılavuzları inceleyin veya örnek alıcı uygulamalarımızı indirin.