Pesan Pemutaran Media

Aplikasi pengirim Google Cast mengontrol pemutaran di perangkat penerima dengan mengirim pesan dalam format JSON ke aplikasi penerima. Demikian pula, penerima mengirim pesan kembali ke pengirim, juga dalam JSON. Pesan dapat berupa perintah dari pengirim yang mengubah status pemutar, respons terhadap perintah tersebut dari penerima, atau struktur data yang menjelaskan media untuk aplikasi penerima.

Mengikuti Persyaratan Layanan Tambahan Developer SDK Google Cast, aplikasi media Cast harus menggunakan pesan ini seperti yang ditentukan di sini untuk mengontrol pemutaran media di penerima. Dengan melakukannya, aplikasi media akan memberikan pengalaman pengguna yang konsisten di seluruh platform dan memastikan bahwa aplikasi Cast akan mendukung kasus penggunaan baru dan mendatang. Struktur ini juga mendukung data kustom, jika sesuai, dan aplikasi dapat menentukan pesannya sendiri untuk perintah yang tidak didukung oleh SDK.

Namespace untuk pesan pemutaran media ditentukan sebagai urn:x-cast:com.google.cast.media.

Catatan: Pesan dan struktur dalam spesifikasi ini memiliki ukuran maksimum implisit yang ditentukan oleh ukuran maksimum pesan transportasi, tidak ada batasan untuk setiap kolom. Ukuran maksimum pesan transportasi saat ini adalah 64 KByte.

Struktur data namespace umum

Superset struktur data yang digunakan oleh semua artefak namespace media ditentukan dalam namespace umum.

Gambar

Ini adalah deskripsi gambar, termasuk sedikit metadata untuk memungkinkan aplikasi pengirim memilih gambar, bergantung pada cara merendernya.

Tinggi dan lebar bersifat opsional hanya pada satu item dalam array Gambar. Misalnya, jika ada satu item yang ditampilkan, item tersebut bersifat opsional; jika ada dua item yang ditampilkan, satu item harus menentukan tinggi dan lebar, tetapi pengirim dapat memilih opsi "default" jika tidak menyukai opsi yang diteruskan dengan parameter tertentu.

Nama Jenis Deskripsi
url URI URI untuk gambar
height bilangan bulat opsional Tinggi gambar
width bilangan bulat opsional Lebar gambar

Volume

Volume streaming media. Digunakan untuk efek memudar/memudar pada streaming media. (Catatan: volume sistem diubah menggunakan API pengirim.) Volume streaming tidak boleh digunakan bersama dengan penggeser volume atau tombol volume untuk mengontrol volume perangkat. Setidaknya salah satu parameter berikut harus diteruskan untuk mengubah volume streaming.

Nama Jenis Deskripsi
level double opsional Tingkat volume streaming saat ini sebagai nilai antara 0,0 dan 1,0, dengan 1,0 adalah volume maksimum.
dibisukan boolean opsional Apakah perangkat Cast dibisukan, terlepas dari tingkat volume

Struktur data namespace media

Pesan ini menjelaskan status pemutar media. Namespace-nya adalah urn:x-cast:com.google.cast.media.

MediaInformation

Struktur data ini menjelaskan aliran media.

Nama Jenis Deskripsi
contentId string ID khusus layanan dari konten yang saat ini dimuat oleh pemutar media. Ini adalah string bentuk bebas dan khusus untuk aplikasi. Biasanya, ini adalah URL ke media, tetapi pengirim dapat memilih untuk meneruskan string yang dapat ditafsirkan dengan benar oleh penerima. Panjang maksimum: 1.000
streamType enum
(string)

Mendeskripsikan jenis artefak media sebagai salah satu dari berikut ini:

  • TIDAK ADA
  • BUFFERED
  • LIVE
contentType string Jenis konten MIME media yang sedang diputar
metadata objek

opsional Objek metadata media, salah satu dari berikut ini:

duration double opsional Durasi streaming yang sedang diputar dalam detik
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi pengirim atau aplikasi penerima

GenericMediaMetadata

Menjelaskan artefak media generik.

Nama Jenis Deskripsi
metadataType bilangan bulat 0  (satu-satunya nilai)
title string opsional Judul deskriptif konten. Pemutar dapat mengambil judul secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
subtitle string opsional Subjudul deskriptif konten. Pemutar dapat mengambil judul secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
images Gambar[] opsional Array URL ke gambar yang terkait dengan konten. Nilai awal kolom dapat diberikan oleh pengirim dalam pesan Load. Harus memberikan ukuran yang direkomendasikan
releaseDate string (ISO 8601) opsional Tanggal dan waktu ISO 8601 saat konten ini dirilis. Pemutar dapat mengambil judul secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load

MovieMediaMetadata

Menjelaskan artefak media film.

Nama Jenis Deskripsi
metadataType bilangan bulat 1  (satu-satunya nilai)
title string opsional Judul deskriptif konten. Pemutar dapat mengambil judul secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
subtitle string opsional Subjudul deskriptif konten. Pemutar dapat mengambil judul secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
studio string Opsional: Studio yang merilis konten. Pemutar dapat mengambil studio secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
images Gambar[] opsional Array URL ke gambar yang terkait dengan konten. Nilai awal kolom dapat diberikan oleh pengirim dalam pesan Load. Harus memberikan ukuran yang direkomendasikan
releaseDate string (ISO 8601) opsional Tanggal dan waktu ISO 8601 saat konten ini dirilis. Pemutar dapat mengambil judul secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load

TvShowMediaMetadata

Mendeskripsikan artefak media episode acara televisi.

Nama Jenis Deskripsi
metadataType bilangan bulat 2  (satu-satunya nilai)
seriesTitle string opsional Judul deskriptif serial TV. Pemutar dapat mengambil judul secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
subtitle string opsional Subjudul deskriptif episode TV. Pemutar dapat mengambil judul secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
season bilangan bulat opsional Nomor season acara TV
episode bilangan bulat opsional Nomor episode (dalam season) acara TV
images Gambar[] opsional Array URL ke gambar yang terkait dengan konten. Nilai awal kolom dapat diberikan oleh pengirim dalam pesan Load. Harus memberikan ukuran yang direkomendasikan
originalAirDate string (ISO 8601) Tanggal dan waktu rilis episode ini dalam format ISO 8601 opsional . Pemutar dapat mengambil originalAirDate secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load

MusicTrackMediaMetadata

Mendeskripsikan artefak media trek musik.

Nama Jenis Deskripsi
metadataType bilangan bulat 3  (satu-satunya nilai)
albumName string opsional Album atau koleksi dari mana lagu ini diambil. Pemutar dapat mengambil albumName secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
title string opsional Nama trek (misalnya, judul lagu). Pemutar dapat mengambil judul secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
albumArtist string opsional Nama artis yang terkait dengan album yang menampilkan lagu ini. Pemutar dapat mengambil albumArtist secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
artis string opsional Nama artis yang terkait dengan trek media. Pemutar dapat mengambil artis secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
composer string opsional Nama komposer yang terkait dengan trek media. Pemutar dapat mengambil komposer secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
trackNumber bilangan bulat opsional Nomor lagu di album
discNumber bilangan bulat opsional Jumlah volume (misalnya, cakram) album
images Gambar[] opsional Array URL ke gambar yang terkait dengan konten. Nilai awal kolom dapat diberikan oleh pengirim dalam pesan Load. Harus memberikan ukuran yang direkomendasikan
releaseDate string (ISO 8601) opsional Tanggal dan waktu ISO 8601 saat konten ini dirilis. Pemutar dapat mengambil releaseDate secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load

PhotoMediaMetadata

Menjelaskan artefak media fotografi.

Nama Jenis Deskripsi
metadataType bilangan bulat 4  (satu-satunya nilai)
title string opsional Judul foto. Pemutar dapat mengambil judul secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
artis string opsional Nama fotografer. Pemutar dapat mengambil artis secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
location string opsional Lokasi verbal tempat foto diambil; misalnya, "Madrid, Spanyol". Pemutar dapat mengambil lokasi secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
latitude double opsional Nilai lintang geografis untuk lokasi tempat foto diambil. Pemain dapat mengambil lintang secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
longitude double opsional Nilai bujur geografis untuk lokasi tempat foto diambil. Pemain dapat mengambil bujur secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
width bilangan bulat opsional Lebar foto dalam piksel. Pemutar dapat mengambil lebar secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
height bilangan bulat opsional Tinggi foto dalam piksel. Pemutar dapat mengambil tinggi secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load
creationDateTime string (ISO 8601) opsional tanggal dan waktu ISO 8601 saat foto ini diambil. Pemutar dapat mengambil creationDateTime secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load

MediaStatus

Menjelaskan status artefak media saat ini terkait dengan sesi.

Nama Jenis Deskripsi
mediaSessionId bilangan bulat ID unik untuk pemutaran sesi tertentu ini. ID ini ditetapkan oleh penerima saat LOAD dan dapat digunakan untuk mengidentifikasi instance pemutaran tertentu. Misalnya, dua pemutaran "Wish you were here" dalam sesi yang sama akan memiliki mediaSessionId yang unik.
media MediaInformation opsional (untuk pesan status) Deskripsi lengkap konten yang diputar kembali. Hanya ditampilkan dalam pesan status jika MediaInformation telah berubah.
playbackRate float Menunjukkan apakah waktu media berjalan, dan pada kecepatan berapa. Hal ini tidak bergantung pada status pemutar karena waktu media dapat berhenti dalam status apa pun. 1,0 adalah waktu normal, 0,5 adalah gerak lambat
playerState enum (string)

Menjelaskan status pemutar sebagai salah satu dari berikut:

  • IDLE  Pemutar belum dimuat
  • MEMUTAR  Pemutar sedang memutar konten secara aktif
  • BUFFERING  Pemutar dalam mode PLAY, tetapi tidak memutar konten secara aktif (currentTime tidak berubah)
  • DIJEDA  Pemutar dijeda
idleReason enum (string)

opsional Jika playerState adalah IDLE dan alasan menjadi IDLE diketahui, properti ini diberikan. Jika pemutar dalam status IDLE karena baru saja dimulai, properti ini tidak akan diberikan; jika pemutar dalam status lain, properti ini tidak boleh diberikan. Nilai berikut berlaku:

  • DIBATALKAN  Pengirim meminta untuk menghentikan pemutaran menggunakan perintah STOP
  • TERGANGGU  Pengirim meminta pemutaran media lain menggunakan perintah LOAD
  • SELESAI  Pemutaran media selesai
  • ERROR  Media terganggu karena terjadi error; misalnya, jika pemutar tidak dapat mendownload media karena masalah jaringan
currentTime double Posisi pemutar media saat ini sejak awal konten, dalam detik. Jika ini adalah konten live stream, kolom ini akan menampilkan waktu dalam detik dari awal acara yang harus diketahui oleh pemain.
supportedMediaCommands flags

Flag yang menjelaskan perintah media yang didukung pemutar media:

  • 1 << 0  Jeda
  • 1 << 1  Cari
  • 1 << 2  Volume streaming
  • 1 << 3  Membisukan streaming
  • 1 << 4  Lewati (tidak digunakan lagi)
  • 1 << 5  Lewati ke sebelumnya (tidak digunakan lagi)
  • 1 << 6  Antrekan berikutnya
  • 1 << 7  Antrekan sebelumnya
  • 1 << 8  Pengacakan antrean
  • 1 << 9  Lewati iklan
  • 1 << 10  Ulangi semua dalam antrean
  • 1 << 11  Mengantre pengulangan satu kali
  • 1 << 12  Mengedit trek
  • 1 << 13  Laju pemutaran
  • 1 << 14  Suka
  • 1 << 15  Tidak suka
  • 1 << 16  Ikuti
  • 1 << 17  Berhenti mengikuti

Kombinasi dijelaskan sebagai penjumlahan; misalnya, Jeda+Cari+StreamVolume+Bisukan == 15.

volume Volume Volume streaming
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi penerima

Perintah dari pengirim ke penerima

Perintah ini mengontrol pemutar media. Semua objek customData dalam pesan di bawah harus bersifat opsional (yaitu, penerima harus melakukan penurunan kualitas dengan benar jika data tidak diteruskan). Tindakan ini akan memungkinkan aplikasi remote control generik berfungsi dengan baik.

Muat

Memuat konten baru ke pemutar media.

Nama Jenis Deskripsi
requestId bilangan bulat ID permintaan, untuk menghubungkan permintaan dan respons
jenis string LOAD (hanya nilai)
media MediaInformation Metadata (termasuk contentId) media yang akan dimuat
autoplay boolean

opsional (default adalah benar) Jika parameter putar otomatis ditentukan, pemutar media akan mulai memutar konten saat dimuat. Meskipun pemutaran otomatis tidak ditentukan, implementasi pemutar media dapat memilih untuk segera memulai pemutaran. Jika pemutaran dimulai, status pemutar dalam respons harus ditetapkan ke BUFFERING, jika tidak, statusnya harus ditetapkan ke PAUSED

currentTime double opsional Detik sejak awal konten. Jika konten adalah konten live, dan posisi tidak ditentukan, streaming akan dimulai pada posisi live
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi pengirim
Respons Pemicu Siaran Error
Tidak ada Perubahan status penerima Pesan Perubahan Status Media Status Pemutar Tidak Valid
Pemuatan Gagal
Pemuatan Dibatalkan

Jeda

Menjeda pemutaran konten saat ini. Memicu notifikasi peristiwa STATUS ke semua aplikasi pengirim.

Nama Jenis Deskripsi
mediaSessionId bilangan bulat ID sesi media yang akan dijeda
requestId bilangan bulat ID permintaan, yang akan digunakan untuk menghubungkan permintaan/respons
jenis string JEDA (hanya nilai)
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi pengirim
Respons Pemicu Siaran Error
Tidak ada Perubahan status penerima Pesan Perubahan Status Media Status Pemutar Tidak Valid

Cari

Menetapkan posisi saat ini dalam streaming. Memicu notifikasi peristiwa STATUS ke semua aplikasi pengirim. Jika posisi yang diberikan berada di luar rentang posisi yang valid untuk konten saat ini, pemutar harus memilih posisi yang valid sedekat mungkin dengan posisi yang diminta.

Nama Jenis Deskripsi
mediaSessionId bilangan bulat ID sesi media tempat posisi streaming ditetapkan
requestId bilangan bulat ID permintaan, untuk menghubungkan permintaan dan respons
jenis string SEEK (hanya nilai)
resumeState enum (string)

opsional Jika tidak disetel, status pemutaran tidak akan berubah; nilai berikut berlaku:

  • PLAYBACK_START  Memaksa media untuk dimulai
  • PLAYBACK_PAUSE  Memaksa media untuk dijeda
currentTime double opsional Detik sejak awal konten. Jika konten adalah konten live, dan posisi tidak ditentukan, streaming akan dimulai pada posisi live
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi pengirim
Respons Pemicu Siaran Error
Tidak ada Perubahan status penerima Pesan Perubahan Status Media Status Pemutar Tidak Valid

Hentikan

Menghentikan pemutaran konten saat ini. Memicu notifikasi peristiwa STATUS ke semua aplikasi pengirim. Setelah perintah ini, konten tidak akan dimuat lagi dan mediaSessionId akan dibatalkan.

Nama Jenis Deskripsi
mediaSessionId bilangan bulat ID sesi media untuk konten yang akan dihentikan
requestId bilangan bulat ID permintaan, untuk menghubungkan permintaan dan respons
jenis string STOP (hanya nilai)
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi pengirim
Respons Pemicu Siaran Error
Tidak ada Perubahan status penerima Pesan Perubahan Status Media Status Pemutar Tidak Valid

Putar

Memulai pemutaran konten yang dimuat dengan panggilan muat, pemutaran dilanjutkan dari posisi waktu saat ini.

Nama Jenis Deskripsi
mediaSessionId bilangan bulat ID sesi media untuk konten yang akan diputar
requestId bilangan bulat ID permintaan, untuk menghubungkan permintaan dan respons
jenis string PLAY (hanya nilai)
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi pengirim
Respons Pemicu Siaran Error
Tidak ada Perubahan status penerima Pesan Perubahan Status Media Status Pemutar Tidak Valid

Mendapatkan Status

Mengambil status media.

Nama Jenis Deskripsi
mediaSessionId bilangan bulat opsional ID sesi media dari media yang status medianya harus ditampilkan. Jika tidak ada yang diberikan, status untuk semua ID sesi media akan diberikan.
requestId bilangan bulat ID permintaan, untuk menghubungkan permintaan dan respons
jenis string GET_STATUS (hanya nilai)
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi pengirim
Respons Pemicu Siaran Error
Pesan MediaStatus kepada pengirim yang memintanya Tidak ada Tidak ada Tidak ada

SetVolume

Menetapkan volume streaming media. Digunakan untuk efek memudar/memudar pada streaming media. (Catatan: volume penerima diubah menggunakan pengirim Web setVolume.) Volume streaming tidak boleh digunakan bersama dengan penggeser volume atau tombol volume untuk mengontrol volume perangkat. Perubahan volume streaming tidak akan memicu UI apa pun di penerima.

Nama Jenis Deskripsi
mediaSessionId bilangan bulat ID Sesi Media untuk media yang volume streaming-nya diubah
requestId bilangan bulat ID permintaan, untuk menghubungkan permintaan dan respons
jenis string VOLUME (hanya nilai)
volume Volume Volume streaming
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi pengirim
Respons Pemicu Siaran Error
Tidak ada Perubahan status penerima Pesan Perubahan Status Media Status Pemutar Tidak Valid

Pesan dari penerima ke pengirim

Penerima mengirimkan dua jenis pesan:

  • Error: Pesan unicast dikirim saat ada respons error terhadap permintaan pengirim.
  • Status: Siarkan pesan.
    • Konsekuensi dari tindakan yang dimulai pengirim. Akan berisi requestId permintaan yang menyebabkan perubahan.
    • Spontan: Misalnya, karena perubahan yang dipicu oleh aplikasi penerima. RequestId akan menjadi 0.

Error: Status Pemutar Tidak Valid

Dikirim saat permintaan oleh pengirim tidak dapat dipenuhi karena pemutar tidak dalam status yang valid. Misalnya, jika aplikasi belum membuat elemen media.

Nama Jenis Deskripsi
requestId bilangan bulat ID permintaan yang menyebabkan error ini
jenis string INVALID_PLAYER_STATE (hanya nilai)
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi penerima

Error: Gagal Memuat

Dikirim saat permintaan pemuatan gagal. Status pemutar akan menjadi IDLE.

Nama Jenis Deskripsi
requestId bilangan bulat ID permintaan yang menyebabkan error ini
jenis string LOAD_FAILED (satu-satunya nilai)
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi penerima

Error: Pemuatan Dibatalkan

Dikirim saat permintaan pemuatan dibatalkan (permintaan pemuatan kedua diterima).

Nama Jenis Deskripsi
requestId bilangan bulat ID permintaan yang menyebabkan error ini
jenis string LOAD_CANCELLED (hanya nilai)
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi penerima

Error: Permintaan Tidak Valid

Dikirim saat permintaan tidak valid (misalnya, jenis permintaan tidak diketahui).

Nama Jenis Deskripsi
requestId bilangan bulat ID permintaan yang menyebabkan error ini
jenis string INVALID_REQUEST (hanya nilai)
alasan Enum (string)

Nilai:

  • INVALID_COMMAND  Perintah tidak didukung
  • DUPLICATE_REQUESTID  ID permintaan tidak unik (penerima sedang memproses permintaan dengan ID yang sama)
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi penerima

Status media

Dikirim setelah perubahan status atau setelah permintaan status media. Hanya objek MediaStatus yang berubah atau diminta yang akan dikirim.

Nama Jenis Deskripsi
requestId bilangan bulat ID yang digunakan untuk menghubungkan respons status ini dengan permintaan yang memulainya atau 0 jika pesan status bersifat spontan (tidak dipicu oleh permintaan pengirim). Aplikasi pengirim akan membuat ID permintaan unik dengan memilih angka acak dan terus meningkatkannya (tidak akan menggunakan 0).
jenis string MEDIA_STATUS (hanya nilai)
status MediaStatus[] Array objek Status Media. CATATAN: elemen media di MediaStatus hanya akan ditampilkan jika telah berubah.
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi penerima