概要
Web Receiver SDK は、
デフォルト キューによって提供される
SDK を使用
QueueData
および
QueueManager
またはカスタムキューを使用するか、
実装
cast.framework.QueueBase
使用し、
QueueManager
をご覧ください。
Queueing API を使用すると、Chromecast をシームレスに統合できます。 次の機能があります。
- Google とパートナー様の外部向けクラウドキュー実装をサポート 保存および作成されたキューをキャスト デバイスに直接読み込むことができます。
- 読み込みではなくキュー内のアイテムのページ分割を可能にするメカニズム 一括で作成できます。
- 次の項目、前の項目、 アイテムのウィンドウをフェッチしたり、関連するメディア情報を 必要があります。
- 「
QueueManager
を使用して、キューアイテムの挿入、削除、更新を管理します。
デフォルト キュー
Web Receiver SDK では、すぐに利用できる形式の制限されたキューが 構成されます。
デフォルトのキューを使用するには、
queueData
送信側の読み込みの LoadRequestData
で指定するか、ローカルの読み込みリクエストを送信します
PlayerManager#load
。
メディアの読み込みもご覧ください。
受信側では、次を使用してキューを変更できます。
QueueManager
初期化します。
カスタムキュー
デフォルト キューのキューイング機能を備えていない場合、 カスタムキューを作成できるため、 柔軟性です
アプリケーション デベロッパーは、Web Receiver 側のキューを作成するには、
cast.framework.QueueBase
。
次の簡単なキューの基本的な例は、
initialize
呼び出しがオーバーライドされ、キューアイテムのリストとキューの説明が返されます。
キャスト デバイスに提供されます。
メディアの読み込みもご覧ください。
// Creates a simple queue with a combination of contents.
const DemoQueue = class extends cast.framework.QueueBase {
constructor() {
super();
/**
* List of media urls.
* @private @const {!Array<string>}
*/
this.myMediaUrls_ = [...];
}
/**
* Provide a list of items.
* @param {!cast.framework.messages.LoadRequestData} loadRequestData
* @return {!cast.framework.messages.QueueData}
*/
initialize(loadRequestData) {
const items = [];
for (const mediaUrl of this.myMediaUrls_) {
const item = new cast.framework.messages.QueueItem();
item.media = new cast.framework.messages.MediaInformation();
item.media.contentId = mediaUrl;
items.push(item);
}
let queueData = loadRequestData.queueData;
// Create a new queue with media from the load request if one doesn't exist.
if (!queueData) {
queueData = new cast.framework.messages.QueueData();
queueData.name = 'Your Queue Name';
queueData.description = 'Your Queue Description';
queueData.items = items;
// Start with the first item in the playlist.
queueData.startIndex = 0;
// Start from 10 seconds into the first item.
queueData.currentTime = 10;
}
return queueData;
}
};
この例では、
initialize
プロバイダのモジュールで
QueueBase
呼び出すことができます。ただし、クラウドキューの実装では、カスタムの Web
レシーバー ロジックはアイテムを外部で取得して、
あります。
Queueing API のより包括的な使用方法を示すデモ
キューに実装されます。
QueueBase
クラス。
const DemoQueue = class extends cast.framework.QueueBase {
constructor() {
/** @private {} */
super();
YourServer.onSomeEvent = this.updateEntireQueue_;
}
/**
* Initializes the queue.
* @param {!cast.framework.messages.LoadRequestData} loadRequestData
* @return {!cast.framework.messages.QueueData}
*/
initialize(loadRequestData) {
let queueData = loadRequestData.queueData;
// Create a new queue with media from the load request if one doesn't exist.
if (!queueData) {
queueData = new cast.framework.messages.QueueData();
queueData.name = 'Your Queue Name';
queueData.description = 'Your Queue Description';
// Put the first set of items into the queue
const items = this.nextItems();
queueData.items = items;
// Start with the first item in the playlist.
queueData.startIndex = 0;
// Start from 10 seconds into the first item.
queueData.currentTime = 10;
}
return queueData;
}
/**
* Picks a set of items from remote server after the reference item id and
* return as the next items to be inserted into the queue. When
* referenceItemId is omitted, items are simply appended to the end of the
* queue.
* @param {number} referenceItemId
* @return {!Array<cast.framework.QueueItem>}
*/
nextItems(referenceItemId) {
// Assume your media has a itemId and the media url
return this.constructQueueList_(YourServer.getNextMedias(referenceItemId));
}
/**
* Picks a set of items from remote server before the reference item id and
* return as the items to be inserted into the queue. When
* referenceItemId is omitted, items are simply appended to beginning of the
* queue.
* @param {number} referenceItemId
* @return {!Array<cast.framework.QueueItem>}
*/
prevItems(referenceItemId) {
return this.constructQueueList_(YourServer.getPrevMedias(referenceItemId));
}
/**
* Constructs a list of QueueItems based on the media information containing
* the item id and the media url.
* @param {number} referenceItemId
* @return {!Array<cast.framework.QueueItem>}
*/
constructQueueList_(medias) {
const items = [];
for (media of medias) {
const item = new cast.framework.messages.QueueItem(media.itemId);
item.media = new cast.framework.messages.MediaInformation();
item.media.contentId = media.url;
items.push(item);
}
return items;
}
/**
* Logs the currently playing item.
* @param {number} itemId The unique id for the item.
* @export
*/
onCurrentItemIdChanged(itemId) {
console.log('We are now playing video ' + itemId);
YourServer.trackUsage(itemId);
}
};
上記の例では、YourServer
が Cloud Queue サーバーであり、ロジックが含まれています。
特定のメディア アイテムを取得する方法を説明しました。
QueueBase
を使用するには
キューイングを実装している場合は、
CastReceiverContext
:
const context = cast.framework.CastReceiverContext.getInstance();
context.start({queue: new DemoQueue()});
キューの管理
「
QueueManager
キューイングソリューションの開発に
柔軟性をもたらします
現在保存されているキュー アイテムのリストと、
現在再生中のアイテム。また、挿入、削除、削除などの操作も行えます。
更新を自動化することもできます。次のスニペットは、
インスタンス
QueueManager
:
const context = cast.framework.CastReceiverContext.getInstance();
const queueManager = context.getPlayerManager().getQueueManager();
デフォルト キューの管理
最初のキューが読み込まれると、
QueueManager
を使用すると、現在のアイテムの取得、
キュー内のすべてのアイテムを取得し、
insertItems
,
removeItems
,
および
updateItems
。
カスタムキューの管理
カスタムキューの実装例を次に示します。
削除メソッドを使用できます。この例では、Cloud Functions を使用して
updateItems
ここでは、開発者が既存のキュー内のキュー項目を変更できます。
ミッドロール挿入点の削除
const DemoQueue = class extends cast.framework.QueueBase {
constructor() {
super();
/** @private @const {!cast.framework.QueueManager} */
this.queueManager_ = context.getPlayerManager().getQueueManager();
}
/**
* Provide a list of items.
* @param {!cast.framework.messages.LoadRequestData} loadRequestData
* @return {!cast.framework.messages.QueueData}
*/
initialize(loadRequestData) {
// Your normal initialization; see examples above.
return queueData;
}
/** Inserts items to the queue. */
onSomeEventTriggeringInsertionToQueue() {
const twoMoreUrls = ['http://url1', 'http://url2'];
const items = [];
for (const mediaUrl of twoMoreUrls) {
const item = new cast.framework.QueueItem();
item.media = new cast.framework.messages.MediaInformation();
item.media.contentId = mediaUrl;
items.push(item);
}
// Insert two more items after the current playing item.
const allItems = this.queueManager_.getItems();
const currentItemIndex = this.queueManager_.getCurrentItemIndex();
const nextItemIndex = currentItemIndex + 1;
let insertBefore = undefined;
if (currentItemIndex >= 0 &&
currentItemIndex < allItems.length - 1) {
insertBefore = allItems[nextItemIndex].itemId;
}
this.queueManager_.insertItems(items, insertBefore);
}
/** Removes a particular item from the queue. */
onSomeEventTriggeringRemovalFromQueue() {
this.queueManager_.removeItems([2]);
}
/** Removes all the ads from all the items across the entire queue. */
onUserBoughtAdFreeVersion() {
const items = this.queueManager_.getItems();
this.queueManager_.updateItems(items.map(item => {
item.media.breaks = undefined;
return item;
}));
}
};
受信メッセージと送信メッセージ
信頼できる情報源としての受信側のキュー取得を完全にサポートするために、 次の追加のキュー メッセージが導入され、CAF によって処理されます。 Receiver SDK:
着信メッセージ | パラメータ | 送信レスポンス メッセージ | 返却 |
次へ | パラメータは必要ありません。 | MEDIA_STATUS | レシーバーが(必要に応じて nextItems() を介してフェッチし)、再生を開始します。 選択します。 |
前へ | パラメータは必要ありません。 | MEDIA_STATUS | Web Receiver が(必要に応じて prevItems() を介してフェッチ)、 直前のアイテムを再生します。 |
FETCH_ITEMS | FetchItemsRequestData | QUEUE_CHANGE | cast.framework.messages.QueueChangeたとえば 挿入ケースの場合 JSON の items フィールドには、新しく取得されたアイテムのリストが含まれます。 |
GET_ITEMS_INFO | itemIds を含む GetItemsInfoRequestData: 配列<数値> | ITEMS_INFO | cast.framework.messages.ItemsInfo とキューアイテム情報。 |
GET_QUEUE_IDS | パラメータは必要ありません。 | QUEUE_IDS | cast.framework.messages.QueueIds. |
NEXT
/PREVIOUS
の場合、Web Receiver の既存のキュー表現が
よりアイテムがない場合、
QueueBase.nextItems()
または
QueueBase.prevItems()
自動的に呼び出され、追加のアイテムを受け取ります。
FETCH_ITEM
の場合、対応する関数
fetchItems
QueueBase
の実装では、クラウド キューに対して
関連するデータを Web Receiver に返して保存します。
さらにアイテムが取得されると、新しいメッセージ タイプ QUEUE_CHANGE
がトリガーされます
送信者に返送されます各種のデータソースと
変更をキューに入れることができます。
GET_ITEMS_INFO
の場合、
QueueBase
の
実装はトリガーされず、Web Receiver がメディア情報を返す
識別子のリストです。
キューのシャッフル
キュー内のアイテムをシャッフルするように設定するには、
shuffle
旗
QueueData
アイテムをキューに読み込むときに、true
に追加します。
次の実装を使用している場合は、
QueueBase
、次を使用:
shuffle
メソッドを使用して、アイテムのシャッフル リストを返します。
既存のキューをシャッフルするには、
shuffle
「QUEUE_UPDATE
」の国旗
MessageType
,
QUEUE_SHUFFLE
コマンドではなく、詳しくは、QueueUpdateRequestData
をご覧ください。
リピートモード
キュー内のアイテムを繰り返すように設定するには、
repeatMode
プロパティ
QueueData
移動します。
RepeatMode
キューに追加することをおすすめします
既存のキューの RepeatMode
を変更するには、次のコマンドを使用します。
repeatMode
プロパティの
QueueUpdateRequestData
,
これは QUEUE_UPDATE
を使用します
MessageType
を選択します。