Приложения-отправители Google Cast управляют воспроизведением на принимающем устройстве, отправляя сообщения в формате JSON в приложение-получатель. Точно так же получатель отправляет сообщения обратно отправителю, также в формате JSON. Сообщения могут быть командами от отправителя, которые изменяют состояние проигрывателя, ответами на эти команды от получателя или структурами данных, описывающими мультимедиа для приложения-получателя.
В соответствии с Дополнительными условиями использования Google Cast SDK для разработчиков , мультимедийное приложение Cast должно использовать эти сообщения, как определено здесь, для управления воспроизведением мультимедиа на приемнике. Это обеспечивает согласованное взаимодействие пользователей с мультимедийным приложением на разных платформах и гарантирует, что приложение Cast будет поддерживать новые и будущие варианты использования. Эти структуры также поддерживают пользовательские данные, где это необходимо, и приложение может определять свои собственные сообщения для команд, не поддерживаемых SDK.
Пространство имен для сообщений воспроизведения мультимедиа определяется как urn:x-cast:com.google.cast.media .
Примечание . Сообщения и структуры в этой спецификации имеют неявный максимальный размер, определяемый максимальным размером транспортного сообщения, ограничений для отдельных полей нет. В настоящее время максимальный размер транспортного сообщения составляет 64 КБ.
Общие структуры данных пространства имен
Надмножество структур данных, используемых всеми артефактами пространства имен мультимедиа, определяется в общем пространстве имен.
Изображение
Это описание изображения, включая небольшое количество метаданных, позволяющее приложению-отправителю выбирать изображения в зависимости от того, как оно будет их отображать.
Высота и ширина являются необязательными только для одного элемента в массиве изображений. Например, если возвращается один элемент, они необязательны; если возвращаются два элемента, один элемент должен указывать высоту и ширину, но отправитель может выбрать вариант «по умолчанию», если ему не нравится вариант, переданный с определенными параметрами.
Имя | Тип | Описание |
---|---|---|
URL | URI | URI для изображения |
высота | целое число | необязательно Высота изображения |
ширина | целое число | необязательно Ширина изображения |
Объем
Громкость медиапотока. Используется для эффектов постепенного появления/затухания в медиапотоке. (Примечание: громкость системы изменяется с помощью API-интерфейсов отправителя.) Громкость потока нельзя использовать вместе с ползунком громкости или кнопками громкости для управления громкостью устройства. Для изменения громкости потока необходимо передать хотя бы один из следующих параметров.
Имя | Тип | Описание |
---|---|---|
уровень | двойной | необязательный Текущий уровень громкости потока в виде значения от 0,0 до 1,0, где 1,0 — максимальная громкость. |
приглушенный | логический | необязательно Отключен ли звук на устройстве Cast, независимо от уровня громкости |
Структуры данных пространства имен мультимедиа
Эти сообщения описывают состояние медиаплеера. Пространство имен urn:x-cast:com.google.cast.media .
СМИИнформация
Эта структура данных описывает медиапоток.
Имя | Тип | Описание |
---|---|---|
идентификатор содержимого | нить | Специфичный для службы идентификатор контента, загружаемого в данный момент медиаплеером. Это строка произвольной формы, специфичная для приложения. В большинстве случаев это будет URL-адрес носителя, но отправитель может передать строку, которую получатель сможет правильно интерпретировать. Максимальная длина: 1k |
тип потока | перечисление (нить) | Описывает тип медиа-артефакта как один из следующих:
|
Тип содержимого | нить | Тип содержимого MIME воспроизводимого носителя |
метаданные | объект | необязательный Объект метаданных мультимедиа, один из следующих: |
продолжительность | двойной | необязательно Продолжительность текущего воспроизводимого потока в секундах |
customData | объект | необязательный Блок данных для конкретного приложения, определяемый либо приложением-отправителем, либо приложением-получателем. |
Общие МедиаМетаданные
Описывает общий артефакт мультимедиа.
Имя | Тип | Описание |
---|---|---|
тип метаданных | целое число | 0 (единственное значение) |
заглавие | нить | необязательный Описательный заголовок содержимого. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
подзаголовок | нить | необязательный описательный подзаголовок содержимого. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
картинки | Изображение [] | необязательный Массив URL-адресов изображения, связанного с содержимым. Начальное значение поля может быть предоставлено отправителем в сообщении загрузки . Должны быть указаны рекомендуемые размеры |
Дата выхода | строка (ИСО 8601) | необязательная дата и время ISO 8601, когда этот контент был выпущен. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
КиноМедиаМетаданные
Описывает медиа-артефакт фильма.
Имя | Тип | Описание |
---|---|---|
тип метаданных | целое число | 1 (единственное значение) |
заглавие | нить | необязательный Описательный заголовок содержимого. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
подзаголовок | нить | необязательный описательный подзаголовок содержимого. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
студия | нить | необязательная студия, которая выпустила контент. Игрок может самостоятельно получить студию, используя content_id, или его может указать отправитель в сообщении о загрузке . |
картинки | Изображение [] | необязательный Массив URL-адресов изображения, связанного с содержимым. Начальное значение поля может быть предоставлено отправителем в сообщении загрузки . Должны быть указаны рекомендуемые размеры |
Дата выхода | строка (ИСО 8601) | необязательная дата и время ISO 8601, когда этот контент был выпущен. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
ТВШоуМедиаМетаданные
Описывает медиа-артефакт эпизода телешоу.
Имя | Тип | Описание |
---|---|---|
тип метаданных | целое число | 2 (единственное значение) |
серияНазвание | нить | необязательно Описательное название телесериала. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
подзаголовок | нить | необязательный описательный подзаголовок телевизионного эпизода. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
время года | целое число | необязательный номер сезона телешоу |
эпизод | целое число | необязательный номер серии (в сезоне) телешоу |
картинки | Изображение [] | необязательный Массив URL-адресов изображения, связанного с содержимым. Начальное значение поля может быть предоставлено отправителем в сообщении загрузки . Должны быть указаны рекомендуемые размеры |
оригиналAirDate | строка (ИСО 8601) | необязательная дата и время ISO 8601, когда этот эпизод был выпущен. Игрок может самостоятельно получить originalAirDate, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
MusicTrackMediaMetadata
Описывает медиа-артефакт музыкальной дорожки.
Имя | Тип | Описание |
---|---|---|
тип метаданных | целое число | 3 (единственное значение) |
название альбома | нить | необязательный Альбом или коллекция, из которой взят этот трек. Плеер может самостоятельно получить имя альбома, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
заглавие | нить | необязательно Название трека (например, название песни). Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
альбомисполнитель | нить | необязательно Имя исполнителя, связанное с альбомом, содержащим этот трек. Плеер может самостоятельно получить AlbumArtist, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
художник | нить | необязательно Имя исполнителя, связанное с дорожкой мультимедиа. Игрок может самостоятельно получить исполнителя, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
композитор | нить | необязательно Имя композитора, связанного с дорожкой мультимедиа. Игрок может самостоятельно получить композитор, используя content_id, или его может указать отправитель в сообщении загрузки . |
номер дорожки | целое число | необязательно Номер трека в альбоме |
номер диска | целое число | необязательно Номер тома (например, диска) альбома |
картинки | Изображение [] | необязательный Массив URL-адресов изображения, связанного с содержимым. Начальное значение поля может быть предоставлено отправителем в сообщении загрузки . Должны быть указаны рекомендуемые размеры |
Дата выхода | строка (ИСО 8601) | необязательная дата и время ISO 8601, когда этот контент был выпущен. Игрок может самостоятельно получить дату выпуска, используя content_id, или он может быть указан отправителем в сообщении загрузки . |
ФотоМедиаМетаданные
Описывает фотоартефакт.
Имя | Тип | Описание |
---|---|---|
тип метаданных | целое число | 4 (единственное значение) |
заглавие | нить | необязательно Название фотографии. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
художник | нить | необязательно Имя фотографа. Игрок может самостоятельно получить исполнителя, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
расположение | нить | необязательно Вербальное место, где была сделана фотография; например, "Мадрид, Испания". Игрок может самостоятельно получить местоположение, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
широта | двойной | необязательное значение географической широты для места, где была сделана фотография. Игрок может самостоятельно получить широту, используя content_id, или ее может указать отправитель в сообщении « Загрузить ». |
долгота | двойной | необязательно Значение географической долготы для места, где была сделана фотография. Игрок может самостоятельно получить долготу, используя content_id, или ее может указать отправитель в сообщении « Загрузить ». |
ширина | целое число | необязательно Ширина фотографии в пикселях. Плеер может самостоятельно получить ширину, используя content_id, или она может быть указана отправителем в сообщении « Загрузить ». |
высота | целое число | необязательно Высота фотографии в пикселях. Игрок может самостоятельно получить высоту, используя content_id, или ее может указать отправитель в сообщении « Загрузить ». |
созданиеДатаВремя | строка (ИСО 8601) | необязательная дата и время ISO 8601, когда была сделана эта фотография. Игрок может самостоятельно получить дату создания, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
МедиаСтатус
Описывает текущее состояние артефакта мультимедиа по отношению к сеансу.
Имя | Тип | Описание |
---|---|---|
медиасессионид | целое число | Уникальный идентификатор для воспроизведения этого конкретного сеанса. Этот идентификатор устанавливается приемником при загрузке и может использоваться для идентификации конкретного экземпляра воспроизведения. Например, два воспроизведения песни «Хочу, чтобы ты был здесь» в рамках одного сеанса будут иметь уникальный идентификатор mediaSessionId. |
СМИ | СМИИнформация | необязательно (для сообщений о состоянии) Полное описание воспроизводимого контента. Возвращаться в сообщениях о состоянии только в том случае, если MediaInformation изменилась. |
скорость воспроизведения | плавать | Указывает, прогрессирует ли время мультимедиа и с какой скоростью. Это не зависит от состояния проигрывателя, поскольку время мультимедиа может останавливаться в любом состоянии. 1,0 — обычное время, 0,5 — замедленное. |
playerState | перечисление (строка) | Описывает состояние игрока как одно из следующих:
|
idleReason | перечисление (строка) | необязательный Если playerState имеет значение IDLE и известна причина, по которой он стал IDLE, предоставляется это свойство. Если проигрыватель находится в состоянии IDLE, потому что он только что запустился, это свойство не будет предоставлено; если игрок находится в любом другом состоянии, это свойство не должно предоставляться. Применяются следующие значения:
|
Текущее время | двойной | Текущая позиция медиаплеера с начала воспроизведения контента в секундах. Если это содержимое прямой трансляции, то это поле представляет собой время в секундах от начала события, которое должно быть известно игроку. |
поддерживаемые медиакоманды | флаги | Флаги, описывающие, какие медиа-команды поддерживает медиаплеер:
Комбинации описываются как суммирование; например, Pause+Seek+StreamVolume+Mute == 15. |
объем | Объем | Громкость потока |
customData | объект | необязательный Блок данных для конкретного приложения, определяемый приложением-получателем |
Команды от отправителя к получателю
Эти команды управляют медиаплеером. Все объекты customData в приведенных ниже сообщениях должны быть необязательными (т. е. приемник должен работать должным образом, если данные не передаются). Это позволит универсальным приложениям удаленного управления работать правильно.
Нагрузка
Загружает новый контент в медиаплеер.
Имя | Тип | Описание |
---|---|---|
идентификатор запроса | целое число | ID запроса, чтобы соотнести запрос и ответ |
тип | нить | ЗАГРУЗИТЬ (только значение) |
СМИ | СМИИнформация | Метаданные (включая contentId) носителя для загрузки |
Автовоспроизведение | логический | необязательный (по умолчанию true) Если указан параметр автовоспроизведения, медиаплеер начнет воспроизведение содержимого при его загрузке. Даже если автовоспроизведение не указано, реализация медиаплеера может выбрать немедленное начало воспроизведения. Если воспроизведение запущено, состояние проигрывателя в ответе должно быть установлено в BUFFERING, в противном случае оно должно быть установлено в PAUSED |
Текущее время | двойной | необязательный Секунды с начала содержимого. Если контент является живым контентом, а позиция не указана, поток начнется с текущей позиции. |
customData | объект | необязательный Блок данных для конкретного приложения, определяемый приложением-отправителем |
Ответ | Триггеры | Трансляции | Ошибки |
---|---|---|---|
Никто | Изменение состояния приемника | Сообщение об изменении статуса носителя | Недопустимое состояние игрока Загрузка не удалась Загрузка отменена |
Пауза
Приостанавливает воспроизведение текущего контента. Запускает уведомление о событии STATUS для всех приложений-отправителей.
Имя | Тип | Описание |
---|---|---|
медиасессионид | целое число | ID сеанса мультимедиа, который нужно приостановить |
идентификатор запроса | целое число | ID запроса, чтобы использовать для сопоставления запроса/ответа |
тип | нить | ПАУЗА (только значение) |
customData | объект | необязательный Блок данных для конкретного приложения, определяемый приложением-отправителем |
Ответ | Триггеры | Трансляции | Ошибки |
---|---|---|---|
Никто | Изменение состояния приемника | Сообщение об изменении статуса носителя | Недопустимое состояние игрока |
Стремиться
Устанавливает текущую позицию в потоке. Запускает уведомление о событии STATUS для всех приложений-отправителей. Если предоставленная позиция находится за пределами диапазона допустимых позиций для текущего содержимого, игрок должен выбрать допустимую позицию как можно ближе к запрошенной позиции.
Имя | Тип | Описание |
---|---|---|
медиасессионид | целое число | ID медиа-сеанса, в котором задается позиция потока |
идентификатор запроса | целое число | ID запроса, чтобы соотнести запрос и ответ |
тип | нить | ПОИСК (только значение) |
резюмесостояние | перечисление (строка) | необязательный Если это не установлено, статус воспроизведения не изменится; применяются следующие значения:
|
Текущее время | двойной | необязательный Секунды с начала содержимого. Если контент является живым контентом, а позиция не указана, поток начнется с текущей позиции. |
customData | объект | необязательный Блок данных для конкретного приложения, определяемый приложением-отправителем |
Ответ | Триггеры | Трансляции | Ошибки |
---|---|---|---|
Никто | Изменение состояния приемника | Сообщение об изменении статуса носителя | Недопустимое состояние игрока |
Останавливаться
Останавливает воспроизведение текущего контента. Запускает уведомление о событии STATUS для всех приложений-отправителей. После этой команды контент больше не будет загружаться, а mediaSessionId станет недействительным.
Имя | Тип | Описание |
---|---|---|
медиасессионид | целое число | Идентификатор медиа-сессии для контента, который нужно остановить |
идентификатор запроса | целое число | ID запроса, чтобы соотнести запрос и ответ |
тип | нить | СТОП (только значение) |
customData | объект | необязательный Блок данных для конкретного приложения, определяемый приложением-отправителем |
Ответ | Триггеры | Трансляции | Ошибки |
---|---|---|---|
Никто | Изменение состояния приемника | Сообщение об изменении статуса носителя | Недопустимое состояние игрока |
Играть в
Начинает воспроизведение содержимого, которое было загружено вызовом load, воспроизведение продолжается с текущей временной позиции.
Имя | Тип | Описание |
---|---|---|
медиасессионид | целое число | Идентификатор медиа-сессии для воспроизводимого контента |
идентификатор запроса | целое число | ID запроса, чтобы соотнести запрос и ответ |
тип | нить | ИГРА (только значение) |
customData | объект | необязательный Блок данных для конкретного приложения, определяемый приложением-отправителем |
Ответ | Триггеры | Трансляции | Ошибки |
---|---|---|---|
Никто | Изменение состояния приемника | Сообщение об изменении статуса носителя | Недопустимое состояние игрока |
Получить статус
Получает статус носителя.
Имя | Тип | Описание |
---|---|---|
медиасессионид | целое число | необязательный Идентификатор сеанса мультимедиа для мультимедиа, для которого должен быть возвращен статус мультимедиа. Если ничего не указано, будет предоставлен статус для всех идентификаторов мультимедийных сеансов. |
идентификатор запроса | целое число | ID запроса, чтобы соотнести запрос и ответ |
тип | нить | GET_STATUS (только значение) |
customData | объект | необязательный Блок данных для конкретного приложения, определяемый приложением-отправителем |
Ответ | Триггеры | Трансляции | Ошибки |
---|---|---|---|
Сообщение MediaStatus отправителю, запросившему его | Никто | Никто | Никто |
SetVolume
Устанавливает громкость медиапотока. Используется для эффектов постепенного появления/затухания в медиапотоке. (Примечание: громкость получателя изменяется с помощью setVolume веб-отправителя.) Громкость потока нельзя использовать вместе с ползунком громкости или кнопками громкости для управления громкостью устройства. Изменение громкости потока не вызовет никакого пользовательского интерфейса на приемнике.
Имя | Тип | Описание |
---|---|---|
медиасессионид | целое число | Media Session ID носителя, для которого изменена громкость потока |
идентификатор запроса | целое число | ID запроса, чтобы соотнести запрос и ответ |
тип | нить | ОБЪЕМ (только значение) |
объем | Объем | Громкость потока |
customData | объект | необязательный Блок данных для конкретного приложения, определяемый приложением-отправителем |
Ответ | Триггеры | Трансляции | Ошибки |
---|---|---|---|
Никто | Изменение состояния приемника | Сообщение об изменении статуса носителя | Недопустимое состояние игрока |
Сообщения от получателя к отправителю
Получатель отправляет два типа сообщений:
- Ошибки: одноадресные сообщения, отправленные при наличии ошибочного ответа на запрос отправителя.
- Статус: Широковещательные сообщения.
- Последствие действия, инициированного отправителем. Будет содержать requestId запроса, вызвавшего изменение.
- Спонтанно: например, из-за изменения, инициированного приложением-получателем. RequestId будет равен 0.
Ошибка: неверное состояние игрока
Отправляется, когда запрос отправителя не может быть выполнен, поскольку проигрыватель не находится в допустимом состоянии. Например, если приложение еще не создало медиа-элемент.
Имя | Тип | Описание |
---|---|---|
идентификатор запроса | целое число | ID запроса, вызвавшего эту ошибку |
тип | нить | INVALID_PLAYER_STATE (только значение) |
customData | объект | необязательный Блок данных для конкретного приложения, определяемый приложением-получателем |
Ошибка: Ошибка загрузки
Отправляется при сбое запроса на загрузку. Состояние игрока будет IDLE.
Имя | Тип | Описание |
---|---|---|
идентификатор запроса | целое число | ID запроса, вызвавшего эту ошибку |
тип | нить | LOAD_FAILED (только значение) |
customData | объект | необязательный Блок данных для конкретного приложения, определяемый приложением-получателем |
Ошибка: загрузка отменена
Отправляется, когда запрос на загрузку был отменен (получен второй запрос на загрузку).
Имя | Тип | Описание |
---|---|---|
идентификатор запроса | целое число | ID запроса, вызвавшего эту ошибку |
тип | нить | LOAD_CANCELED (только значение) |
customData | объект | необязательный Блок данных для конкретного приложения, определяемый приложением-получателем |
Ошибка: неверный запрос
Отправляется, когда запрос недействителен (например, неизвестный тип запроса).
Имя | Тип | Описание |
---|---|---|
идентификатор запроса | целое число | ID запроса, вызвавшего эту ошибку |
тип | нить | INVALID_REQUEST (только значение) |
причина | Перечисление (строка) | Ценности:
|
customData | объект | необязательный Блок данных для конкретного приложения, определяемый приложением-получателем |
Статус СМИ
Отправляется после изменения состояния или после запроса состояния носителя. Будут отправлены только измененные или запрошенные объекты MediaStatus.
Имя | Тип | Описание |
---|---|---|
идентификатор запроса | целое число | Идентификатор, используемый для сопоставления этого ответа о состоянии с запросом, который его инициировал, или 0, если сообщение о состоянии является спонтанным (не инициировано запросом отправителя). Приложения-отправители будут генерировать уникальные идентификаторы запросов, выбирая случайное число и постоянно увеличивая его (они не будут использовать 0). |
тип | нить | MEDIA_STATUS (только значение) |
статус | МедиаСтатус [] | Массив объектов Media Status. ПРИМЕЧАНИЕ: элемент мультимедиа в MediaStatus будет возвращен только в том случае, если он изменился. |
customData | объект | необязательный Блок данных для конкретного приложения, определяемый приложением-получателем |
Приложения-отправители Google Cast управляют воспроизведением на принимающем устройстве, отправляя сообщения в формате JSON в приложение-получатель. Точно так же получатель отправляет сообщения обратно отправителю, также в формате JSON. Сообщения могут быть командами от отправителя, которые изменяют состояние проигрывателя, ответами на эти команды от получателя или структурами данных, описывающими мультимедиа для приложения-получателя.
В соответствии с Дополнительными условиями использования Google Cast SDK для разработчиков , мультимедийное приложение Cast должно использовать эти сообщения, как определено здесь, для управления воспроизведением мультимедиа на приемнике. Это обеспечивает согласованное взаимодействие пользователей с мультимедийным приложением на разных платформах и гарантирует, что приложение Cast будет поддерживать новые и будущие варианты использования. Эти структуры также поддерживают пользовательские данные, где это необходимо, и приложение может определять свои собственные сообщения для команд, не поддерживаемых SDK.
Пространство имен для сообщений воспроизведения мультимедиа определяется как urn:x-cast:com.google.cast.media .
Примечание . Сообщения и структуры в этой спецификации имеют неявный максимальный размер, определяемый максимальным размером транспортного сообщения, ограничений для отдельных полей нет. В настоящее время максимальный размер транспортного сообщения составляет 64 КБ.
Общие структуры данных пространства имен
Надмножество структур данных, используемых всеми артефактами пространства имен мультимедиа, определяется в общем пространстве имен.
Изображение
Это описание изображения, включая небольшое количество метаданных, позволяющее приложению-отправителю выбирать изображения в зависимости от того, как оно будет их отображать.
Высота и ширина являются необязательными только для одного элемента в массиве изображений. Например, если возвращается один элемент, они необязательны; если возвращаются два элемента, один элемент должен указывать высоту и ширину, но отправитель может выбрать вариант «по умолчанию», если ему не нравится вариант, переданный с определенными параметрами.
Имя | Тип | Описание |
---|---|---|
URL | URI | URI для изображения |
высота | целое число | необязательно Высота изображения |
ширина | целое число | необязательно Ширина изображения |
Объем
Громкость медиапотока. Используется для эффектов постепенного появления/затухания в медиапотоке. (Примечание: громкость системы изменяется с помощью API-интерфейсов отправителя.) Громкость потока нельзя использовать вместе с ползунком громкости или кнопками громкости для управления громкостью устройства. Для изменения громкости потока необходимо передать хотя бы один из следующих параметров.
Имя | Тип | Описание |
---|---|---|
уровень | двойной | необязательный Текущий уровень громкости потока в виде значения от 0,0 до 1,0, где 1,0 — максимальная громкость. |
приглушенный | логический | необязательно Отключен ли звук на устройстве Cast, независимо от уровня громкости |
Структуры данных пространства имен мультимедиа
Эти сообщения описывают состояние медиаплеера. Пространство имен urn:x-cast:com.google.cast.media .
СМИИнформация
Эта структура данных описывает медиапоток.
Имя | Тип | Описание |
---|---|---|
идентификатор содержимого | нить | Специфичный для службы идентификатор контента, загружаемого в данный момент медиаплеером. Это строка произвольной формы, специфичная для приложения. В большинстве случаев это будет URL-адрес носителя, но отправитель может передать строку, которую получатель сможет правильно интерпретировать. Максимальная длина: 1k |
тип потока | перечисление (нить) | Описывает тип медиа-артефакта как один из следующих:
|
Тип содержимого | нить | Тип содержимого MIME воспроизводимого носителя |
метаданные | объект | необязательный Объект метаданных мультимедиа, один из следующих: |
продолжительность | двойной | необязательно Продолжительность текущего воспроизводимого потока в секундах |
customData | объект | необязательный Блок данных для конкретного приложения, определяемый либо приложением-отправителем, либо приложением-получателем. |
Общие МедиаМетаданные
Описывает общий артефакт мультимедиа.
Имя | Тип | Описание |
---|---|---|
тип метаданных | целое число | 0 (единственное значение) |
заглавие | нить | необязательный Описательный заголовок содержимого. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
подзаголовок | нить | необязательный описательный подзаголовок содержимого. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
картинки | Изображение [] | необязательный Массив URL-адресов изображения, связанного с содержимым. Начальное значение поля может быть предоставлено отправителем в сообщении загрузки . Должны быть указаны рекомендуемые размеры |
Дата выхода | строка (ИСО 8601) | необязательная дата и время ISO 8601, когда этот контент был выпущен. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
КиноМедиаМетаданные
Описывает медиа-артефакт фильма.
Имя | Тип | Описание |
---|---|---|
тип метаданных | целое число | 1 (единственное значение) |
заглавие | нить | необязательный Описательный заголовок содержимого. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
подзаголовок | нить | необязательный описательный подзаголовок содержимого. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
студия | нить | необязательная студия, которая выпустила контент. Игрок может самостоятельно получить студию, используя content_id, или его может указать отправитель в сообщении о загрузке . |
картинки | Изображение [] | необязательный Массив URL-адресов изображения, связанного с содержимым. Начальное значение поля может быть предоставлено отправителем в сообщении загрузки . Должны быть указаны рекомендуемые размеры |
Дата выхода | строка (ИСО 8601) | необязательная дата и время ISO 8601, когда этот контент был выпущен. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
ТВШоуМедиаМетаданные
Описывает медиа-артефакт эпизода телешоу.
Имя | Тип | Описание |
---|---|---|
тип метаданных | целое число | 2 (единственное значение) |
серияНазвание | нить | необязательно Описательное название телесериала. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
подзаголовок | нить | необязательный описательный подзаголовок телевизионного эпизода. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
время года | целое число | необязательный номер сезона телешоу |
эпизод | целое число | необязательный номер серии (в сезоне) телешоу |
картинки | Изображение [] | необязательный Массив URL-адресов изображения, связанного с содержимым. Начальное значение поля может быть предоставлено отправителем в сообщении загрузки . Должны быть указаны рекомендуемые размеры |
оригиналAirDate | строка (ИСО 8601) | необязательная дата и время ISO 8601, когда этот эпизод был выпущен. Игрок может самостоятельно получить originalAirDate, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
MusicTrackMediaMetadata
Описывает медиа-артефакт музыкальной дорожки.
Имя | Тип | Описание |
---|---|---|
тип метаданных | целое число | 3 (единственное значение) |
название альбома | нить | необязательный Альбом или коллекция, из которой взят этот трек. Плеер может самостоятельно получить имя альбома, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
заглавие | нить | необязательно Название трека (например, название песни). Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
альбомисполнитель | нить | необязательно Имя исполнителя, связанное с альбомом, содержащим этот трек. Плеер может самостоятельно получить AlbumArtist, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
художник | нить | необязательно Имя исполнителя, связанное с дорожкой мультимедиа. Игрок может самостоятельно получить исполнителя, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
композитор | нить | необязательно Имя композитора, связанного с дорожкой мультимедиа. Игрок может самостоятельно получить композитор, используя content_id, или его может указать отправитель в сообщении загрузки . |
номер дорожки | целое число | необязательно Номер трека в альбоме |
номер диска | целое число | необязательно Номер тома (например, диска) альбома |
картинки | Изображение [] | необязательный Массив URL-адресов изображения, связанного с содержимым. Начальное значение поля может быть предоставлено отправителем в сообщении загрузки . Должны быть указаны рекомендуемые размеры |
Дата выхода | строка (ИСО 8601) | необязательная дата и время ISO 8601, когда этот контент был выпущен. Игрок может самостоятельно получить дату выпуска, используя content_id, или он может быть указан отправителем в сообщении загрузки . |
ФотоМедиаМетаданные
Описывает фотоартефакт.
Имя | Тип | Описание |
---|---|---|
тип метаданных | целое число | 4 (единственное значение) |
заглавие | нить | необязательно Название фотографии. Игрок может самостоятельно получить заголовок, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
художник | нить | необязательно Имя фотографа. Игрок может самостоятельно получить исполнителя, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
расположение | нить | необязательно Вербальное место, где была сделана фотография; например, "Мадрид, Испания". Игрок может самостоятельно получить местоположение, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
широта | двойной | необязательное значение географической широты для места, где была сделана фотография. Игрок может самостоятельно получить широту, используя content_id, или ее может указать отправитель в сообщении « Загрузить ». |
долгота | двойной | необязательно Значение географической долготы для места, где была сделана фотография. Игрок может самостоятельно получить долготу, используя content_id, или ее может указать отправитель в сообщении « Загрузить ». |
ширина | целое число | необязательно Ширина фотографии в пикселях. Плеер может самостоятельно получить ширину, используя content_id, или она может быть указана отправителем в сообщении « Загрузить ». |
высота | целое число | необязательно Высота фотографии в пикселях. Игрок может самостоятельно получить высоту, используя content_id, или ее может указать отправитель в сообщении « Загрузить ». |
созданиеДатаВремя | строка (ИСО 8601) | необязательная дата и время ISO 8601, когда была сделана эта фотография. Игрок может самостоятельно получить дату создания, используя content_id, или его может указать отправитель в сообщении « Загрузить ». |
МедиаСтатус
Описывает текущее состояние артефакта мультимедиа по отношению к сеансу.
Имя | Тип | Описание |
---|---|---|
медиасессионид | целое число | Уникальный идентификатор для воспроизведения этого конкретного сеанса. Этот идентификатор устанавливается приемником при загрузке и может использоваться для идентификации конкретного экземпляра воспроизведения. Например, два воспроизведения песни «Хочу, чтобы ты был здесь» в рамках одного сеанса будут иметь уникальный идентификатор mediaSessionId. |
СМИ | СМИИнформация | необязательно (для сообщений о состоянии) Полное описание воспроизводимого контента. Возвращаться в сообщениях о состоянии только в том случае, если MediaInformation изменилась. |
скорость воспроизведения | плавать | Указывает, прогрессирует ли время мультимедиа и с какой скоростью. Это не зависит от состояния проигрывателя, поскольку время мультимедиа может останавливаться в любом состоянии. 1,0 — обычное время, 0,5 — замедленное. |
playerState | перечисление (строка) | Описывает состояние игрока как одно из следующих:
|
idleReason | перечисление (строка) | необязательный Если playerState имеет значение IDLE и известна причина, по которой он стал IDLE, предоставляется это свойство. Если проигрыватель находится в состоянии IDLE, потому что он только что запустился, это свойство не будет предоставлено; если игрок находится в любом другом состоянии, это свойство не должно предоставляться. Применяются следующие значения:
|
Текущее время | двойной | Текущая позиция медиаплеера с начала воспроизведения контента в секундах. Если это содержимое прямой трансляции, то это поле представляет собой время в секундах от начала события, которое должно быть известно игроку. |
поддерживаемые медиакоманды | флаги | Флаги, описывающие, какие медиа-команды поддерживает медиаплеер:
Комбинации описываются как суммирование; например, Pause+Seek+StreamVolume+Mute == 15. |
объем | Объем | Громкость потока |
customData | объект | optional Application-specific blob of data defined by the receiver application |
Commands from sender to receiver
These commands control the media player. All customData objects in the messages below must be optional (ie the receiver should degrade properly if data is not passed). This will allow generic remote control apps to work properly.
Load
Loads new content into the media player.
Name | Тип | Описание |
---|---|---|
requestId | integer | ID of the request, to correlate request and response |
type | нить | LOAD (only value) |
media | MediaInformation | Metadata (including contentId) of the media to load |
autoplay | логический | optional (default is true) If the autoplay parameter is specified, the media player will begin playing the content when it is loaded. Even if autoplay is not specified, media player implementation may choose to begin playback immediately. If playback is started, the player state in the response should be set to BUFFERING, otherwise it should be set to PAUSED |
currentTime | double | optional Seconds since beginning of content. If the content is live content, and position is not specifed, the stream will start at the live position |
customData | object | optional Application-specific blob of data defined by the sender application |
Ответ | Triggers | Broadcasts | Errors |
---|---|---|---|
None | Receiver state change | A Media Status Change message | Invalid Player State Load Failed Load Cancelled |
Pause
Pauses playback of the current content. Triggers a STATUS event notification to all sender applications.
Name | Тип | Описание |
---|---|---|
mediaSessionId | integer | ID of the media session to be paused |
requestId | integer | ID of the request, to use to correlate request/response |
type | нить | PAUSE (only value) |
customData | object | optional Application-specific blob of data defined by the sender application |
Ответ | Triggers | Broadcasts | Errors |
---|---|---|---|
None | Receiver state change | A Media Status Change message | Invalid Player State |
Seek
Sets the current position in the stream. Triggers a STATUS event notification to all sender applications. If the position provided is outside the range of valid positions for the current content, then the player should pick a valid position as close to the requested position as possible.
Name | Тип | Описание |
---|---|---|
mediaSessionId | integer | ID of the media session where the position of the stream is set |
requestId | integer | ID of the request, to correlate request and response |
type | нить | SEEK (only value) |
resumeState | enum (string) | optional If this is not set, playback status will not change; the following values apply:
|
currentTime | double | optional Seconds since beginning of content. If the content is live content, and position is not specifed, the stream will start at the live position |
customData | object | optional Application-specific blob of data defined by the sender application |
Ответ | Triggers | Broadcasts | Errors |
---|---|---|---|
None | Receiver state change | A Media Status Change message | Invalid Player State |
Stop
Stops playback of the current content. Triggers a STATUS event notification to all sender applications. After this command the content will no longer be loaded and the mediaSessionId is invalidated.
Name | Тип | Описание |
---|---|---|
mediaSessionId | integer | ID of the media session for the content to be stopped |
requestId | integer | ID of the request, to correlate request and response |
type | нить | STOP (only value) |
customData | object | optional Application-specific blob of data defined by the sender application |
Ответ | Triggers | Broadcasts | Errors |
---|---|---|---|
None | Receiver state change | A Media Status Change message | Invalid Player State |
Play
Begins playback of the content that was loaded with the load call, playback is continued from the current time position.
Name | Тип | Описание |
---|---|---|
mediaSessionId | integer | ID of the media session for the content to be played |
requestId | integer | ID of the request, to correlate request and response |
type | нить | PLAY (only value) |
customData | object | optional Application-specific blob of data defined by the sender application |
Ответ | Triggers | Broadcasts | Errors |
---|---|---|---|
None | Receiver state change | A Media Status Change message | Invalid Player State |
Get Status
Retrieves the media status.
Name | Тип | Описание |
---|---|---|
mediaSessionId | integer | optional Media session ID of the media for which the media status should be returned. If none is provided, then the status for all media session IDs will be provided. |
requestId | integer | ID of the request, to correlate request and response |
type | нить | GET_STATUS (only value) |
customData | object | optional Application-specific blob of data defined by the sender application |
Ответ | Triggers | Broadcasts | Errors |
---|---|---|---|
MediaStatus message to the sender that requested it | None | None | None |
SetVolume
Sets the media stream volume. Used for fade-in/fade-out effects on the media stream. (Note: receiver volume is changed using the Web sender setVolume .) Stream volume must not be used in conjunction with the volume slider or volume buttons to control the device volume. A change in stream volume will not trigger any UI on the receiver.
Name | Тип | Описание |
---|---|---|
mediaSessionId | integer | Media Session ID of the media for which the stream volume is changed |
requestId | integer | ID of the request, to correlate request and response |
type | нить | VOLUME (only value) |
volume | Volume | Stream volume |
customData | object | optional Application-specific blob of data defined by the sender application |
Ответ | Triggers | Broadcasts | Errors |
---|---|---|---|
None | Receiver state change | A Media Status Change message | Invalid Player State |
Messages from receiver to sender
The receiver sends two types of messages:
- Errors: Unicast messages sent when there is an error response to a sender request.
- Status: Broadcast messages.
- Consequence of a sender-initiated action. Will contain the requestId of the request that caused the change.
- Spontaneous: For example, due to a change triggered by the receiver application. The RequestId will be 0.
Error: Invalid Player State
Sent when the request by the sender can not be fulfilled because the player is not in a valid state. For example, if the application has not created a media element yet.
Name | Тип | Описание |
---|---|---|
requestId | integer | ID of the request that generated this error |
type | нить | INVALID_PLAYER_STATE (only value) |
customData | object | optional Application-specific blob of data defined by the receiver application |
Error: Load Failed
Sent when the load request failed. The player state will be IDLE.
Name | Тип | Описание |
---|---|---|
requestId | integer | ID of the request that generated this error |
type | нить | LOAD_FAILED (only value) |
customData | object | optional Application-specific blob of data defined by the receiver application |
Error: Load Cancelled
Sent when the load request was cancelled (a second load request was received).
Name | Тип | Описание |
---|---|---|
requestId | integer | ID of the request that generated this error |
type | нить | LOAD_CANCELLED (only value) |
customData | object | optional Application-specific blob of data defined by the receiver application |
Error: Invalid Request
Sent when the request is invalid (an unknown request type, for example).
Name | Тип | Описание |
---|---|---|
requestId | integer | ID of the request that generated this error |
type | нить | INVALID_REQUEST (only value) |
reason | Enum (string) | Values:
|
customData | object | optional Application-specific blob of data defined by the receiver application |
Media status
Sent after a state change or after a media status request. Only the MediaStatus objects that changed or were requested will be sent.
Name | Тип | Описание |
---|---|---|
requestId | integer | ID used to correlate this status response with the request that originated it or 0 if the status message is spontaneous (not triggered by a sender request). Sender applications will generate unique request IDs by selecting a random number and continuously increasing it (they will not use 0). |
type | нить | MEDIA_STATUS (only value) |
status | MediaStatus [] | Array of Media Status objects. NOTE: the media element in MediaStatus will only be returned if it has changed. |
customData | object | optional Application-specific blob of data defined by the receiver application |