広告のカウントダウン タイマーを作成する
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
このガイドでは、IMA DAI SDK を使って広告カウントダウン タイマーを実装する方法について説明します。
カウントダウン タイマーは HTML 要素であるため、必要に応じてスタイルと位置を調整できます。
前提条件
このガイドは、
スタートガイド
タイマーの作成
タイマーを作成するには、HTML にプレースホルダ要素を追加し、
CSS。次に、AdProgress
イベントをリッスンする JavaScript を追加して、
予定の adProgressData
の残り時間。
dai.html
<body onLoad="initPlayer()">
<h2>IMA DAI SDK for HTML5 Demo (HLS.JS)</h2>
<video id="video"></video>
<div id="adUi"></div>
<div id="ad-timer">Ad not currently playing.</div>
</body>
dai.css
#ad-timer {
display: inline-block;
margin-top: 375px;
padding: 15px;
border: 1px solid #000;
}
...
dai.js
...
var streamManager; // used to request ad-enabled streams.
var hls = new Hls(); // hls.js video player
var videoElement;
var adUiElement;
var timerElement
...
function initPlayer() {
videoElement = document.getElementById('video');
adUiElement = document.getElementById('adUi');
timerElement = document.getElementById('ad-timer');
...
streamManager.addEventListener(
[google.ima.dai.api.StreamEvent.Type.LOADED,
google.ima.dai.api.StreamEvent.Type.ERROR,
google.ima.dai.api.StreamEvent.Type.AD_BREAK_STARTED,
google.ima.dai.api.StreamEvent.Type.AD_BREAK_ENDED,
google.ima.dai.api.StreamEvent.Type.PAUSED,
google.ima.dai.api.StreamEvent.Type.RESUMED,
google.ima.dai.api.StreamEvent.Type.AD_PROGRESS],
onStreamEvent,
false);
...
function onStreamEvent(e) {
switch (e.type) {
case google.ima.dai.api.StreamEvent.Type.LOADED:
console.log('Stream loaded');
loadUrl(e.getStreamData().url);
break;
case google.ima.dai.api.StreamEvent.Type.ERROR:
console.log('Error loading stream, playing backup stream.' + e);
loadUrl(BACKUP_STREAM);
break;
case google.ima.dai.api.StreamEvent.Type.AD_BREAK_STARTED:
console.log('Ad Break Started');
videoElement.controls = false;
adUiElement.style.display = 'block';
break;
case google.ima.dai.api.StreamEvent.Type.AD_PROGRESS:
var progressData = e.getStreamData().adProgressData;
var timeRemaining = Math.ceil(progressData.duration - progressData.currentTime);
timerElement.innerHTML = 'Ad finished in: ' + timeRemaining;
break;
case google.ima.dai.api.StreamEvent.Type.AD_BREAK_ENDED:
timerElement.innerHTML = 'Ad not currently playing.';
console.log('Ad Break Ended');
videoElement.controls = true;
adUiElement.style.display = 'none';
break;
default:
break;
}
}
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-08-31 UTC。
[null,null,["最終更新日 2025-08-31 UTC。"],[[["\u003cp\u003eThis guide explains how to implement an ad countdown timer within a video player using the IMA DAI SDK for HTML5.\u003c/p\u003e\n"],["\u003cp\u003eThe timer is created using HTML elements for display and styling, with JavaScript listening to ad progress events for real-time updates.\u003c/p\u003e\n"],["\u003cp\u003eYou can customize the timer's appearance by modifying the CSS and HTML elements as per your design preferences.\u003c/p\u003e\n"],["\u003cp\u003eThe guide requires prior understanding of HTML5 DAI implementation, as outlined in the 'Get Started' guide it builds upon.\u003c/p\u003e\n"]]],[],null,["This guide walks you through how to implement an ad countdown timer with the IMA DAI SDK.\nThe countdown timer is an HTML element, so you can adjust its styling and positioning as needed.\n\nPrerequisites\n\nThis guide builds on the HTML5 DAI example described in the\n[Get started](/ad-manager/dynamic-ad-insertion/sdk/html5) guide.\n\nCreating the timer\n\nTo create the timer, add a placeholder element to the HTML and implement styling in the\nCSS. Then, add some JavaScript to listen to the `AdProgress` event and calculate the\nremaining time from the event's `adProgressData`.\n\ndai.html \n\n```text\n \u003cbody onLoad=\"initPlayer()\"\u003e\n \u003ch2\u003eIMA DAI SDK for HTML5 Demo (HLS.JS)\u003c/h2\u003e\n \u003cvideo id=\"video\"\u003e\u003c/video\u003e\n \u003cdiv id=\"adUi\"\u003e\u003c/div\u003e\n \u003cdiv id=\"ad-timer\"\u003eAd not currently playing.\u003c/div\u003e\n \u003c/body\u003e\n```\n\ndai.css \n\n```css+lasso\n\n#ad-timer {\n display: inline-block;\n margin-top: 375px;\n padding: 15px;\n border: 1px solid #000;\n}\n\n...\n```\n\ndai.js \n\n```gdscript\n ...\n\n var streamManager; // used to request ad-enabled streams.\n var hls = new Hls(); // hls.js video player\n var videoElement;\n var adUiElement;\n var timerElement\n\n ...\n\n function initPlayer() {\n videoElement = document.getElementById('video');\n adUiElement = document.getElementById('adUi');\n timerElement = document.getElementById('ad-timer');\n\n ...\n\n streamManager.addEventListener(\n [google.ima.dai.api.StreamEvent.Type.LOADED,\n google.ima.dai.api.StreamEvent.Type.ERROR,\n google.ima.dai.api.StreamEvent.Type.AD_BREAK_STARTED,\n google.ima.dai.api.StreamEvent.Type.AD_BREAK_ENDED,\n google.ima.dai.api.StreamEvent.Type.PAUSED,\n google.ima.dai.api.StreamEvent.Type.RESUMED,\n google.ima.dai.api.StreamEvent.Type.AD_PROGRESS],\n onStreamEvent,\n false);\n\n ...\n\n function onStreamEvent(e) {\n switch (e.type) {\n case google.ima.dai.api.StreamEvent.Type.LOADED:\n console.log('Stream loaded');\n loadUrl(e.getStreamData().url);\n break;\n case google.ima.dai.api.StreamEvent.Type.ERROR:\n console.log('Error loading stream, playing backup stream.' + e);\n loadUrl(BACKUP_STREAM);\n break;\n case google.ima.dai.api.StreamEvent.Type.AD_BREAK_STARTED:\n console.log('Ad Break Started');\n videoElement.controls = false;\n adUiElement.style.display = 'block';\n break;\n case google.ima.dai.api.StreamEvent.Type.AD_PROGRESS:\n var progressData = e.getStreamData().adProgressData;\n var timeRemaining = Math.ceil(progressData.duration - progressData.currentTime);\n timerElement.innerHTML = 'Ad finished in: ' + timeRemaining;\n break;\n case google.ima.dai.api.StreamEvent.Type.AD_BREAK_ENDED:\n timerElement.innerHTML = 'Ad not currently playing.';\n console.log('Ad Break Ended');\n videoElement.controls = true;\n adUiElement.style.display = 'none';\n break;\n default:\n break;\n }\n }\n```"]]