İlgilendiğiniz DAI çözümünü seçme
Kapsül yayınlama DAI
IMA SDK'ları, multimedya reklamlarını web sitelerinize ve uygulamalarınıza entegre etmeyi basitleştirir.
IMA SDK'ları, herhangi bir VAST uyumlu reklam sunucunuzu yönetebilir ve uygulamalarınızda reklam oynatmayı yönetebilirsiniz.
IMA DAI SDK'larıyla, uygulamalar aşağıdakiler için reklam ve içerik videosu için akış isteğinde bulunur seç-izle video veya canlı içerik gibi. SDK daha sonra birleştirilmiş bir video akışı döndürür. Bu sayede, hesabınızda reklam ve içerik videosu arasında geçiş uygulamasını indirin.
Bu kılavuzda, IMA kullanılarak Canlı DAI Kapsül Yayınlama yayınının nasıl oynatılacağı gösterilmektedir CAF için DAI SDK'sı.
Bu kılavuzu kullanmadan önce, Chromecast Uygulama Çerçevesi'nin Web Alıcısı protokolü. Bu kılavuzda CAF alıcısı kavramlarının, örneğin: mesaj kesiciler ve mediaInformation ve cihazlar gibi Cast Komut ve Denetim aracını, bir CAF göndericisi taklit edilir.
IMA DAI kapsül yayınını kullanmak için bir kapsül yayınlama iş ortağıyla çalışıyor olmanız ve bir Ad Manager 360 İleri Düzey hesap. Ad Manager hesabınız varsa şunun için hesap yöneticinizle iletişime geçin: inceleyebilirsiniz. Ad Manager'a kaydolma hakkında bilgi için Ad Manager Yardım Merkezi.
Diğer platformlarla entegrasyon veya IMA'yı kullanma hakkında bilgi için istemci tarafı SDK'lar için Interactive Media Ads SDK'ları konusuna bakın.
IMA DAI Kapsül Yayınlamaya genel bakış
IMA CAF DAI SDK'sı kullanarak kapsül yayınlamanın uygulanması iki ana bileşen içerir: aşağıdaki örneklere göz atabilirsiniz:
StreamRequest
: Google'ın reklam sunucularına yapılan akış isteğini tanımlayan bir nesne. İstekler bir ağ kodu, özel öğe anahtarı ve isteğe bağlı bir API anahtarı belirtir. yanı sıra diğer isteğe bağlı parametreleri de kullanabilirsiniz.StreamManager
: Video akışı ile IMA DAI arasındaki iletişimi işleyen nesne izleme ping'lerini tetikleme ve akış etkinliklerini yayıncısına ait.
Ön koşullar
- Şu Google Hesabı'na sahip bir Cast Developer Console hesabı: kayıtlı test cihazlarıdır.
- Barındırılan bir web alıcısı Cast Developer Console'unuza kayıtlıdır ve barındırmak için değiştirilebilir kodu kullanın.
- Web alıcı uygulamanızı kullanacak şekilde yapılandırılan bir gönderme uygulama. bu örneğin amacı için Cast Command and Control tool gönderin.
Gönderenin MediaInfo nesnelerini yapılandırma
Öncelikle gönderen uygulamanızın
MediaInfo
nesne
aşağıdaki alanları dahil edin:
Alan | İçindekiler | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
contentId
|
Bu medya öğesinin benzersiz tanımlayıcısı.
CONTENT_ID |
||||||||||
contentUrl
|
İsteğe bağlı. DAI akışı yüklenemezse oynatılacak yedek akış URL'si.
BACKUP_STREAM_URL |
||||||||||
contentType
|
İsteğe bağlı. İçerik yedek akışlarının mime türü. Yalnızca DASH için gereklidir
akışlar.
CONTENT_STREAM_MIMETYPE |
||||||||||
streamType
|
Bu değer için kullanılan dize değişmez değeri veya sabit değer gönderene göre değişir. platformu. | ||||||||||
customData
|
customData alanı, ek
zorunlu alanları doldurun.
|
Aşağıda, başlamanıza yardımcı olacak bazı kod örneklerini bulabilirsiniz:
Web
Bir Cast web gönderende bu değerleri yapılandırmak için önce bir
MediaInfo
bir nesne yükleyin, ardından bir yükleme işlemi yapın
isteği gönderin.
// Create mediaInfo object
const mediaInfo = new chrome.cast.media.MediaInfo("CONTENT_ID");
mediaInfo.contentUrl = "BACKUP_STREAM_URL";
mediaInfo.contentType = "CONTENT_STREAM_MIMETYPE";
mediaInfo.streamType = chrome.cast.media.StreamType.LIVE;
mediaInfo.customData = {
manifestUrl: "MANIFEST_URL",
networkCode: "NETWORK-CODE",
customAssetKey: "CUSTOM_ASSET_KEY",
apiKey: "API_KEY"
};
// Make load request to cast web receiver
const castSession = cast.framework.CastContext.getInstance().getCurrentSession();
const request = new chrome.cast.media.LoadRequest(mediaInfo);
castSession.loadMedia(request).then(
() => { console.log('Load succeed'); },
(errorCode) => { console.log('Error code: ' + errorCode); });
Android
Bir Cast web gönderende bu değerleri yapılandırmak için önce bir MediaInfo nesnesi ve sonrasında bir Web'e yükleme isteği alıcı.
JSONObject customData = new JSONObject()?
.put("manifestUrl", "MANIFEST_URL")
.put("networkCode", "NETWORK-CODE")
.put("customAssetKey", "CUSTOM_ASSET_KEY")
.put("apiKey", "API_KEY");
MediaInfo mediaInfo = MediaInfo.Builder("CONTENT_ID")
.setContentUrl("BACKUP_STREAM_URL")
.setContentType("CONTENT_STREAM_MIMETYPE")
.setStreamType(MediaInfo.STREAM_TYPE_LIVE)
.setCustomData(customData)
.build();
RemoteMediaClient remoteMediaClient = mCastSession.getRemoteMediaClient();
remoteMediaClient.load(new MediaLoadRequestData.Builder().setMediaInfo(mediaInfo).build());
iOS (Obj-C)
Bir Cast web gönderende bu değerleri yapılandırmak için önce bir
GCKMediaInformation
bir nesne yükleyin, ardından bir yükleme işlemi yapın
isteği gönderin.
NSURL url = [NSURL URLWithString:@"BACKUP_STREAM_URL"];
NSDictionary *customData = @{
@"manifestUrl": @"MANIFEST_URL",
@"networkCode": @"NETWORK-CODE",
@"customAssetKey": @"CUSTOM_ASSET_KEY",
@"apiKey": @"API_KEY"};
mediaInfoBuilder.customData = customData;
GCKMediaInformationBuilder *mediaInfoBuilder =
[[GCKMediaInformationBuilder alloc] initWithContentID: @"CONTENT_ID"];
mediaInfoBuilder.contentURL = url;
mediaInfoBuilder.contentType = @"CONTENT_STREAM_MIMETYPE";
mediaInfoBuilder.streamType = GCKMediaStreamTypeLive;
mediaInfoBuilder.customData = customData;
self.mediaInformation = [mediaInfoBuilder build];
GCKRequest *request = [self.sessionManager.currentSession.remoteMediaClient loadMedia:self.mediaInformation];
if (request != nil) {
request.delegate = self;
}
iOS (Swift)
Bir Cast web gönderende bu değerleri yapılandırmak için önce bir
GCKMediaInformation
bir nesne yükleyin, ardından bir yükleme işlemi yapın
isteği gönderin.
let url = URL.init(string: "BACKUP_STREAM_URL")
guard let mediaURL = url else {
print("invalid mediaURL")
return
}
let customData = [
"liveConfigID": "MANIFEST_URL",
"networkCode": "NETWORK-CODE",
"customAssetKey": "CUSTOM_ASSET_KEY",
"region": "API_KEY"
]
let mediaInfoBuilder = GCKMediaInformationBuilder.init(contentId: "CONTENT_ID")
mediaInfoBuilder.contentURL = mediaUrl
mediaInfoBuilder.contentType = @"CONTENT_STREAM_MIMETYPE"
mediaInfoBuilder.streamType = GCKMediaStreamType.Live
mediaInfoBuilder.customData = customData
mediaInformation = mediaInfoBuilder.build()
guard let mediaInfo = mediaInformation else {
print("invalid mediaInformation")
return
}
if let request = sessionManager.currentSession?.remoteMediaClient?.loadMedia
(mediaInfo) {
request.delegate = self
}
CAC aracı
Bu değerleri Cast Command and Control'te yapılandırmak için aracını kullanın, Medya Yükle sekmesini tıklayın ve özel yükleme isteği türünü YÜKLE olarak ayarlayın. Ardından metin alanındaki JSON verilerini, şu JSON ile:
{
"media": {
"contentId": "CONTENT_ID",
"contentUrl": "BACKUP_STREAM_URL",
"contentType": ""CONTENT_STREAM_MIMETYPE"",
"streamType": "LIVE",
"customData": {
"liveConfigID": "MANIFEST_URL",
"networkCode": "NETWORK-CODE",
"customAssetKey": "CUSTOM_ASSET_KEY",
"oAuthToken": "API_KEY"
}
}
}
Bu özel yükleme isteği, paketin geri kalanını test etmek için alıcıya gönderilebilir. adımları.
Temel CAF alıcısı oluşturma
CAF SDK Özel Web Alıcısı'nda görüldüğü gibi bir özel web alıcısı oluşturun. Rehber.
Alıcınızın kodu şu şekilde görünmelidir:
<html>
<head>
<script
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js">
</script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
// ...
</script>
</body>
</html>
IMA DAI SDK'sını içe aktarın ve Oynatıcı Yöneticisi'ni edinme
CAF için IMA DAI SDK'sını web alıcınıza aktarmak üzere bir komut dosyası etiketi ekleyin. yükleyin. Komut dosyası etiketinde, alıcı bağlamını saklayın ve oyuncu yöneticisini sabit tutar.
<html>
<head>
<script
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 Stream Manager'ı başlatma
IMA Akış Yöneticisi'ni 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>
Akış Yöneticisi Yük Önleyicisini Oluşturma
Medya öğeleriniz CAF'ye iletilmeden önce akış isteğinizi YÜKLE mesajı anlamına gelir.
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
/**
* Creates a livestream request object for a pod serving stream.
* @param {!LoadRequestData} castRequest The request object from the cast sender
* @return {StreamRequest} an IMA stream request
*/
const createStreamRequest = (castRequest) => { /* ... */};
/**
* Initates a DAI stream request for the final stream manifest.
* @param {!LoadRequestData} castRequest The request object from the cast sender
* @return {Promise<LoadRequestData>} a promise that resolves to an updated castRequest, containing the DAI stream manifest
*/
const createDAICastRequest = (castRequest) => {
return streamManager.requestStream(castRequest, createStreamRequest(castRequest))
.then((castRequestWithPodStreamData) => {
console.log('Successfully made DAI stream request.');
// ...
return castRequestWithPodStreamData;
})
.catch((error) => {
console.log('Failed to make DAI stream request.');
// CAF will automatically fallback to the content URL
// that it can read from the castRequest object.
return castRequest;
});
};
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, createDAICastRequest);
castContext.start();
Akış isteğini oluşturma
Şuna göre bir kapsül yayınlama akışı oluşturmak için createStreamRequest
işlevini tamamlayın:
onayladı.
/**
* Creates a livestream request object for a pod serving stream.
* @param {!LoadRequestData} castRequest The request object from the cast sender
* @return {StreamRequest} an IMA stream request
*/
const createStreamRequest = (castRequest) => {
const streamRequest = new google.ima.cast.dai.api.PodStreamRequest();
const customData = castRequest.media.customData;
streamRequest.customAssetKey = customData.customAssetKey;
streamRequest.networkCode = customData.networkCode;
streamRequest.apiKey = customData.apiKey;
return streamRequest;
};
İçerik URL'sini manifest URL'si ve akış kimliğiyle değiştirin.
Akış isteğiniz başarılı olursa streamManager.getStreamId()
öğesini kullanarak
akış kimliğini alın ve manifestUrl'nize ekleyin. Burada
[[STREAMID]]
. Ardından, mevcut contentUrl
değerini yeni ile değiştirin
CAF'nin canlı yayını birleştirilmiş reklam kapsülleriyle oynatması için manifestUrl
.
/**
* Initates a DAI stream request for the final stream manifest.
* @param {!LoadRequestData} castRequest The request object from the cast sender
* @return {Promise<LoadRequestData>} a promise that resolves to an updated castRequest, containing the DAI stream manifest
*/
const createDAICastRequest = (castRequest) => {
return streamManager.requestStream(castRequest, createStreamRequest(castRequest))
.then((castRequestWithPodStreamData) => {
console.log('Successfully made DAI stream request.');
const media = castRequestWithPodStreamData.media;
const manifestUrl = media.customData.manifestUrl || "";
if (manifestUrl) {
console.log('Replacing the contentURL with the manifest URL and stream ID');
const streamId = streamManager.getStreamId();
castRequestWithPodStreamData.media.contentUrl = manifestUrl.replace('[[STREAMID]]', streamId);
return castRequestWithPodStreamData;
})
.catch((error) => {
console.log('Failed to make DAI stream request.');
// CAF will automatically fallback to the content URL
// that it can read from the castRequest object.
return castRequest;
});
};
Artık Cast Uygulaması ile kapsül yayınlama akışları isteyebilir ve oynatabilirsiniz. Çerçeve ve CAF için IMA DAI SDK'sı.