Genel Bakış
Web Receiver SDK,
tarafından sağlanan varsayılan sıra
Şunu kullanan SDK:
QueueData
ve
QueueManager
veya özel bir sıra kullanarak
uygulamak
cast.framework.QueueBase
ve
QueueManager
başlıklı makaleye göz atın.
Queueing API, uygulamaların Cast ile daha iyi entegre olmasını sağlar. Bunun için şu özellikleri sunar:
- Google'ın ve iş ortaklarının bulut sırası uygulama desteği. doğrudan yayın cihazlarına yüklenebilir.
- Sıradaki öğelerin yüklemek yerine sayfalara ayrılmasına olanak tanıyan mekanizmalar her şeyi aynı anda yapabilirsiniz.
- Sonraki öğeye, önceki öğeye gitme gibi yeni mesajlaşma desteği öğeler içeren bir pencerenin yanı sıra bir dizi öğe vardır.
- İlgili içeriği oluşturmak için kullanılan
QueueManager
sıra öğelerinin eklenmesini, kaldırılmasını ve güncellenmesini yönetmek için kullanılır.
Varsayılan sıra
Web Receiver SDK, bir sıraya koyun.
Varsayılan sırayı kullanmak için
queueData
gönderen tarafı yüklemelerinizin LoadRequestData
içinde veya bir yerel yükleme isteği gönderin
kullanarak
PlayerManager#load
.
Ayrıca, Medya yükleme konusuna da bakın.
Alıcı tarafında sıra
QueueManager
ilk medya yüklendikten sonra.
Özel sıra
Varsayılan sıra, bir işlem için gereken özel sıra oluşturma olanağından yararlandığınızda, ve esneklik sağlar.
Uygulama geliştiriciler,
cast.framework.QueueBase
.
Burada, rastgele değer verilen
initialize
çağrı geçersiz kılınır ve ardından sıra açıklamalarıyla birlikte sıra öğelerinin listesi
yayın cihazına aktarılır.
Ayrıca, Medya yükleme konusuna da bakın.
// 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;
}
};
Bu örnekte,
initialize
çağrısı, sağlayıcının
QueueBase
oluşturucu çağrısı. Ancak bulut sırası uygulaması için özel web
Alıcı mantığı, öğeleri harici olarak getirebilir ve daha sonra,
ilk kullanıma hazırlama çağrısı.
Sıraya alma API'sinin daha kapsamlı bir kullanımını göstermek için aşağıdaki demoyu inceleyebilirsiniz
en çok uygulanan
QueueBase
sınıfı.
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);
}
};
Yukarıdaki örnekte YourServer
, bulut sırası sunucunuzdur ve
Belirli medya öğelerinin nasıl getirileceği hakkında.
QueueBase
uygulamasını kullanmak için
kuyruğa alma uygulanan durumlardan biri,
CastReceiverContext
:
const context = cast.framework.CastReceiverContext.getInstance();
context.start({queue: new DemoQueue()});
Sırayı yönetme
İlgili içeriği oluşturmak için kullanılan
QueueManager
geliştiricilere sıraya alma çözümlerini geliştirmeleri için esneklik sağlar.
şu anda depolanmış olan sıra öğeleri listesine ve
çalan öğe. Aynı zamanda ekleme, kaldırma,
hem de sıraya alınan öğelerin güncellenmesini sağlar. Aşağıdaki snippet, bir
şunun örneği:
QueueManager
:
const context = cast.framework.CastReceiverContext.getInstance();
const queueManager = context.getPlayerManager().getQueueManager();
Varsayılan sıra yönetimi
İlk sıra yüklendikten sonra
QueueManager
geçerli öğeyi alma, öğe verilerini alma,
otomatik olarak oluşturmak ve sıradaki öğeleri kullanarak
insertItems
,
removeItems
,
ve
updateItems
Özel sıra yönetimi
Burada,
yöntemlerini tespit etmenizi sağlar. Bu örnekte, aynı zamanda
updateItems
Geliştiricilerin mevcut sıradaki sıra öğelerini değiştirebilecekleri,
Reklam aralarını kaldırma.
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;
}));
}
};
Gelen ve giden iletiler
Doğru kaynak olarak alıcı tarafı sıra getirme işlemini tam olarak desteklemek için CAF tarafından sunulacak ve işlenecek aşağıdaki ek iletiler Alıcı SDK:
Gelen Mesaj | Parametreler | Giden Yanıt Mesajı | Geri ver |
İLERİ | Herhangi bir parametre gerekmez. | MEDIA_STATUS | Alıcı, (gerekirse nextItems() aracılığıyla getirir) ve oynamaya başlar. bir sonraki öğedir. |
ÖNCEKİ | Herhangi bir parametre gerekmez. | MEDIA_STATUS | Web Alıcısı (gerekirse prevItems() aracılığıyla getirir) ve önceki öğe oynatılıyor. |
FETCH_ITEMS | FetchItemsRequestData | QUEUE_CHANGE | cast.framework.messages.QueueChange. Örneğin, "insert case" için JSON'daki items alanı, getirilen yeni öğelerin listesini içerir. |
GET_ITEMS_INFO | itemIds içeren GetItemsInfoRequestData: Dizi<sayı> | ITEMS_INFO | Sıra öğesi bilgilerini içeren cast.framework.messages.ItemsInfo. |
GET_QUEUE_IDS | Herhangi bir parametre gerekmez. | QUEUE_IDS | cast.framework.messages.QueueIds. |
NEXT
/PREVIOUS
için, Web Alıcısı'ndaki mevcut sıra gösterimi
daha fazla öğesi yoksa
QueueBase.nextItems()
veya
QueueBase.prevItems()
daha fazla öğe almak için otomatik olarak çağrılır.
FETCH_ITEM
için karşılık gelen fonksiyon
fetchItems
içindeki QueueBase
uygulaması, bulut sıraları için çağrılır.
saklayacak Web Alıcısı'na döndürülecek ilgili verileri içerir.
Daha fazla öğe getirildiğinde QUEUE_CHANGE
adlı yeni bir mesaj türü tetiklenir
gönderene gönderilir. Farklı proje yönetimi metodolojilerini
sıradaki değişiklikler.
GET_ITEMS_INFO
için,
QueueBase
uygulama tetiklenmez ve Web Alıcı medya bilgilerini döndürür
kimlikler listesinde zaten bulabilirsiniz.
Sıra karıştırılıyor
Sıranızdaki öğelerin karıştırılmasını sağlamak için
shuffle
bayrağı
QueueData
öğeleriniz sıraya yüklenirken true
olarak ayarlanır.
Etiket Yöneticisi'ni kullanıyorsanız
QueueBase
, şunu kullanın:
"the"
shuffle
yöntemini kullanın.
Mevcut bir sırayı karıştırmak için:
shuffle
QUEUE_UPDATE
bayrağı
MessageType
,
(QUEUE_SHUFFLE
komutu yerine) içerir. Görüntüleyin
QueueUpdateRequestData
konulu videomuzu izleyin.
Tekrar modu
Sıranızdaki öğeleri tekrarlanacak şekilde ayarlamak için
repeatMode
özelliği
QueueData
istenen değere
RepeatMode
göz önünde bulundurmanız gerekir.
Mevcut bir sıranın RepeatMode
ayarını değiştirmek için
repeatMode
öğesinin özelliği
QueueUpdateRequestData
,
Burada QUEUE_UPDATE
MessageType
.