Pesan Pemutaran Media

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

Setelah Persyaratan Layanan Developer Tambahan Google Cast SDK, aplikasi media Cast harus menggunakan pesan tersebut seperti yang dijelaskan di sini untuk mengontrol pemutaran media pada penerima. Cara ini akan memberi aplikasi media pengalaman pengguna yang konsisten di seluruh platform dan memastikan aplikasi Cast akan mendukung kasus penggunaan baru dan mendatang. Struktur ini juga mendukung data kustom, jika perlu, 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 dengan ukuran maksimum pesan transpor, tidak ada batas untuk masing-masing 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 sejumlah kecil metadata untuk memungkinkan aplikasi pengirim memilih gambar, tergantung pada bagaimana gambar akan dirender.

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 untuk menggunakan opsi "default" jika tidak menyukai item yang diteruskan dengan parameter tertentu.

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

Volume

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

Nama Jenis Deskripsi
level ganda opsional Tingkat volume streaming saat ini sebagai nilai antara 0,0 dan 1,0 dengan 1,0 adalah volume maksimum.
dinonaktifkan boolean opsional Apakah perangkat Transmisi dibisukan, terlepas dari level volumenya

Struktur data namespace media

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

MediaInformation

Struktur data ini menjelaskan aliran media.

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

Menjelaskan jenis artefak media sebagai salah satu dari berikut ini:

  • TIDAK ADA
  • TERBUKTI
  • LIVE
contentType string Jenis konten MIME dari media yang diputar
metadata objek

opsional Objek metadata media, salah satu dari yang berikut:

duration ganda opsional Durasi streaming yang sedang diputar dalam hitungan 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 mandiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Muat
subtitel string opsional Subtitel deskriptif konten. Pemutar dapat mengambil judul secara mandiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Muat
gambar Gambar[] opsional Array URL ke gambar yang terkait dengan konten. Nilai awal kolom dapat diberikan oleh pengirim dalam pesan Muat. Harus menyediakan ukuran yang direkomendasikan
releaseDate string (ISO 8601) opsional ISO 8601 tanggal dan waktu konten ini dirilis. Pemutar dapat mengambil judul secara mandiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Muat

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 mandiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Muat
subtitel string opsional Subtitel deskriptif konten. Pemutar dapat mengambil judul secara mandiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Muat
studio string opsional Studio yang merilis konten tersebut. Pemutar dapat mengambil studio sendiri menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Muat
gambar Gambar[] opsional Array URL ke gambar yang terkait dengan konten. Nilai awal kolom dapat diberikan oleh pengirim dalam pesan Muat. Harus menyediakan ukuran yang direkomendasikan
releaseDate string (ISO 8601) opsional ISO 8601 tanggal dan waktu konten ini dirilis. Pemutar dapat mengambil judul secara mandiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Muat

TvShowMediaMetadata

Menjelaskan artefak media episode acara televisi.

Nama Jenis Deskripsi
metadataType bilangan bulat 2  (satu-satunya nilai)
seriesTitle string opsional Judul deskriptif serial t.v. Pemutar dapat mengambil judul secara mandiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Muat
subtitel string opsional Subtitel deskriptif episode t.v. Pemutar dapat mengambil judul secara mandiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Muat
musim bilangan bulat opsional Nomor season acara t.v.
episode bilangan bulat opsional Nomor episode (di season) acara t.v.
gambar Gambar[] opsional Array URL ke gambar yang terkait dengan konten. Nilai awal kolom dapat diberikan oleh pengirim dalam pesan Muat. Harus menyediakan ukuran yang direkomendasikan
originalAirDate string (ISO 8601) opsional ISO 8601 tanggal dan waktu episode ini dirilis. Pemutar dapat mengambil originalAirDate secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load

MusicTrackMediaMetadata

Menjelaskan artefak media trek musik.

Nama Jenis Deskripsi
metadataType bilangan bulat 3  (satu-satunya nilai)
albumName string opsional Album atau koleksi yang digunakan untuk mengambil lagu ini. Pemutar dapat mengambil albumName secara mandiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Muat
title string opsional Nama lagu (misalnya, judul lagu). Pemutar dapat mengambil judul secara mandiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Muat
albumArtist string opsional Nama artis yang terkait dengan album yang menampilkan lagu ini. Pemutar dapat mengambil albumArtist secara mandiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Muat
artis string opsional Nama artis yang terkait dengan trek media. Pemutar dapat mengambil artis sendiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Muat
composer string opsional Nama komposer yang terkait dengan trek media. Pemutar dapat mengambil komposer secara mandiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Load
trackNumber bilangan bulat opsional Jumlah lagu dalam album
discNumber bilangan bulat opsional Jumlah volume (misalnya, disk) album
gambar Gambar[] opsional Array URL ke gambar yang terkait dengan konten. Nilai awal kolom dapat diberikan oleh pengirim dalam pesan Muat. Harus menyediakan ukuran yang direkomendasikan
releaseDate string (ISO 8601) opsional ISO 8601 tanggal dan waktu 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 mandiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Muat
artis string opsional Nama fotografer. Pemutar dapat mengambil artis sendiri menggunakan content_id, atau dapat diberikan oleh pengirim dalam pesan Muat
lokasi string opsional Lokasi lisan tempat foto diambil; misalnya, "Madrid, Spanyol". Pemutar dapat mengambil lokasi secara mandiri menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Muat
latitude ganda opsional Nilai lintang geografis untuk lokasi tempat foto diambil. Pemutar dapat mengambil lintang secara mandiri menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Muat
longitude ganda opsional Nilai bujur geografis untuk lokasi tempat foto diambil. Pemutar dapat mengambil garis bujur secara terpisah menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Muat
lebar bilangan bulat opsional Lebar foto dalam piksel. Pemutar dapat mengambil lebar secara terpisah menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Muat
height bilangan bulat opsional Tinggi dalam piksel foto. Pemutar dapat mengambil tinggi secara terpisah menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Muat
creationDateTime string (ISO 8601) opsional ISO 8601 tanggal dan waktu pengambilan foto ini. Pemutar dapat mengambil creationDateTime secara independen menggunakan content_id atau dapat diberikan oleh pengirim dalam pesan Load

MediaStatus

Menjelaskan status artefak media saat ini sehubungan dengan sesi.

Nama Jenis Deskripsi
mediaSessionId bilangan bulat ID unik untuk pemutaran sesi khusus ini. ID ini disetel oleh penerima pada saat LOAD dan dapat digunakan untuk mengidentifikasi instance pemutaran tertentu. Misalnya, dua pemutaran "Wish you were here" dalam sesi yang sama masing-masing akan memiliki mediaSessionId unik.
media MediaInformation opsional (untuk pesan status) Deskripsi lengkap konten yang sedang diputar. Hanya ditampilkan dalam pesan status jika MediaInformation telah berubah.
playbackRate float Menunjukkan apakah waktu media sedang berlangsung, dan kecepatannya. Hal ini tidak bergantung pada status pemutar karena waktu media dapat berhenti dalam status apa pun. 1.0 adalah waktu biasa, 0.5 adalah gerak lambat
playerState enum (string)

Menjelaskan status pemutar sebagai salah satu dari yang berikut:

  • IDLE  Pemutar belum dimuat
  • PLAYING  Pemain terus memutar konten
  • BUFFERING  Pemain berada dalam mode PUTAR, tetapi tidak aktif memutar konten (currentTime tidak berubah)
  • JEDA  Pemutar dijeda
idleReason enum (string)

opsional Jika playerState berstatus IDLE dan alasannya menjadi IDLE diketahui, properti ini akan diberikan. Jika pemain menganggur karena baru saja dimulai, properti ini tidak akan diberikan; jika pemain berada dalam negara lain, properti ini tidak boleh diberikan. Nilai-nilai berikut berlaku:

  • CANCELLED  Pengirim meminta untuk menghentikan pemutaran menggunakan perintah STOP
  • INTERRUPTED  Pengirim meminta untuk memutar 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 ganda Posisi saat ini pemutar media sejak awal konten, dalam detik. Jika ini adalah konten live stream, kolom ini menunjukkan waktu dalam detik dari awal acara yang harus diketahui oleh pemain.
supportedMediaCommands flag

Tanda yang menjelaskan perintah media yang didukung pemutar media:

  • 1  Jeda
  • 2  Cari
  • 4  Volume streaming
  • 8  Bisukan streaming
  • 16  Lewati
  • 32  Lewati mundur

Kombinasi dijelaskan sebagai penjumlahan; misalnya, Pause+Seek+StreamVolume+Mute == 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 degradasi dengan benar jika data tidak diteruskan). Tindakan ini akan memungkinkan aplikasi remote control umum 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
putar otomatis boolean

opsional (defaultnya adalah true) Jika parameter putar otomatis ditentukan, pemutar media akan mulai memutar konten saat dimuat. Bahkan jika putar otomatis tidak ditentukan, penerapan pemutar media dapat memilih untuk segera memulai pemutaran. Jika pemutaran dimulai, status pemutar dalam respons harus disetel ke BUFFERING. Jika tidak, status pemutar harus DIJEDA

currentTime ganda opsional Detik sejak awal konten. Jika konten adalah konten live, dan posisinya 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 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 aliran data. Memicu notifikasi peristiwa STATUS ke semua aplikasi pengirim. Jika posisi yang diberikan berada di luar rentang posisi yang valid untuk konten saat ini, maka 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 ganda opsional Detik sejak awal konten. Jika konten adalah konten live, dan posisinya 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 lagi dimuat dan mediaSessionId menjadi tidak valid.

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 pemuatan, 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 disediakan, 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

Menyetel volume streaming media. Digunakan untuk efek fade-in/fade-out pada streaming media. (Catatan: volume penerima diubah menggunakan setVolume pengirim Web.) Volume aliran tidak boleh digunakan bersama penggeser volume atau tombol volume untuk mengontrol volume perangkat. Perubahan volume aliran data tidak akan memicu UI apa pun pada penerima.

Nama Jenis Deskripsi
mediaSessionId bilangan bulat ID Sesi Media dari 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 mengirim 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. IDPermintaan akan menjadi 0.

Error: Status Pemutar Tidak Valid

Dikirim saat permintaan dari 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 menghasilkan error ini
jenis string INVALID_Player_STATE (hanya nilai)
customData objek opsional Blob data khusus aplikasi yang ditentukan oleh aplikasi penerima

Error: Pemuatan Gagal

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

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

Kesalahan: Muatan Dibatalkan

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

Nama Jenis Deskripsi
requestId bilangan bulat ID permintaan yang menghasilkan 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 yang tidak diketahui).

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

Nilai:

  • INVALID_COMMAND  Perintah tidak didukung
  • DUPLICATE_REQUESTID  ID permintaan tidak unik (penerima 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 berasal darinya atau 0 jika pesan status 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