очередь

Платформа Cast предоставляет API-интерфейсы организации очередей, которые поддерживают создание списков элементов контента, таких как видео- или аудиопотоки, для последовательного воспроизведения на веб-приемнике. Очередь элементов контента можно редактировать, переупорядочивать, обновлять и т.д.

SDK веб-приемника поддерживает очередь и отвечает на операции в очереди, пока в очереди есть хотя бы один активный элемент (воспроизводимый или приостановленный). Отправители могут присоединиться к сеансу и добавлять элементы в очередь. Получатель поддерживает сеанс для элементов очереди до тех пор, пока последний элемент не завершит воспроизведение или отправитель не остановит воспроизведение и не завершит сеанс, или пока отправитель не загрузит новую очередь в получатель. По умолчанию получатель не сохраняет никакой информации о прекращенных очередях. Как только последний элемент в очереди завершается, сеанс мультимедиа завершается, и очередь исчезает.

Создание и загрузка элементов очереди мультимедиа

В iOS элемент медиа-очереди представлен в платформе Cast как экземпляр GCKMediaQueueItem . Когда вы создаете элемент очереди мультимедиа с адаптивным содержимым, вы можете установить время предварительной загрузки, чтобы проигрыватель мог начать буферизацию элемента очереди мультимедиа до того, как элемент, стоящий перед ним в очереди, завершит воспроизведение. Подробнее о предварительной загрузке см. в руководстве по предварительной загрузке веб-приемника .

Установка атрибута autoplay элемента в значение true позволяет веб-приемнику воспроизводить его автоматически. Например, вы можете использовать шаблон построителя для создания элемента очереди мультимедиа следующим образом:

Быстрый
let builder = GCKMediaQueueItemBuilder.init()
builder.mediaInformation = mediaInformation
builder.autoplay = true
builder.preloadTime = 8.0
let newItem = builder.build()
Цель-C
GCKMediaQueueItemBuilder *builder = [[GCKMediaQueueItemBuilder alloc] init];
builder.mediaInformation = self.mediaInformation;
builder.autoplay = YES;
builder.preloadTime = 8.0;
GCKMediaQueueItem *newItem = [builder build];

Загрузите массив элементов очереди мультимедиа в очередь, используя соответствующий метод queueLoadItems класса GCKRemoteMediaClient .

Получить обновление статуса очереди мультимедиа

Когда веб-приемник загружает элемент очереди мультимедиа, он присваивает элементу уникальный идентификатор, который сохраняется на протяжении сеанса (и срока службы очереди). Вы можете узнать статус очереди, указав, какой элемент в данный момент загружен (возможно, он не воспроизводится), загружается или предварительно загружен. Вы также можете получить упорядоченный список всех элементов в очереди. Класс GCKMediaStatus предоставляет следующую информацию о состоянии:

  • Свойство preloadedItemID — идентификатор элемента, который в данный момент предварительно загружен, если таковой имеется.
  • Свойство loadingItemID — идентификатор элемента, который в данный момент загружается,
  • Свойство currentItemID — идентификатор текущего элемента очереди, если таковой имеется.
  • queueItemCount — возвращает количество элементов в очереди воспроизведения.
  • queueItemAtIndex — возвращает элемент по указанному индексу в очереди воспроизведения.

Используйте эти элементы вместе с другими членами статуса мультимедиа, чтобы информировать ваше приложение о состоянии очереди и элементах в очереди. Помимо обновлений статуса мультимедиа из веб-приемника, вы можете прослушивать изменения в очереди, реализовав -[remoteMediaClientDidUpdateQueue:] из GCKRemoteMediaClientListener .

Редактировать очередь

Для работы с элементами в очереди используйте методы очереди GCKRemoteMediaClient . у вас есть несколько API. Они позволяют загружать массив элементов в новую очередь, вставлять элементы в существующую очередь, обновлять свойства элементов в очереди, выполнять переход элемента вперед или назад в очереди, устанавливать свойства самой очереди (например, , измените repeatMode , который выбирает следующий элемент), удалите элементы из очереди и измените порядок элементов в очереди.