chrome.tabCapture

Deskripsi

Gunakan chrome.tabCapture API untuk berinteraksi dengan aliran media tab.

Izin

tabCapture

Ringkasan

chrome.tabCapture API memungkinkan Anda mengakses MediaStream yang berisi video dan audio tab saat ini. API ini hanya dapat dipanggil setelah pengguna memanggil ekstensi, seperti dengan mengklik tombol tindakan ekstensi. Hal ini mirip dengan perilaku izin activeTab.

Mempertahankan audio sistem

Saat MediaStream diperoleh untuk tab, audio di tab tersebut tidak akan lagi diputar ke pengguna. Hal ini mirip dengan perilaku fungsi getDisplayMedia() saat flag suppressLocalAudioPlayback ditetapkan ke benar (true).

Untuk terus memutar audio ke pengguna, gunakan hal berikut:

const output = new AudioContext();
const source = output.createMediaStreamSource(stream);
source.connect(output.destination);

Tindakan ini akan membuat AudioContext baru dan menghubungkan audio MediaStream tab ke tujuan default.

ID Stream

Memanggil chrome.tabCapture.getMediaStreamId akan menampilkan ID stream. Untuk mengakses MediaStream dari ID nanti, gunakan hal berikut:

navigator.mediaDevices.getUserMedia({
  audio: {
    mandatory: {
      chromeMediaSource: "tab",
      chromeMediaSourceId: id,
    },
  },
  video: {
    mandatory: {
      chromeMediaSource: "tab",
      chromeMediaSourceId: id,
    },
  },
});

Batasan penggunaan

Setelah memanggil getMediaStreamId(), ada batasan tempat ID stream yang ditampilkan dapat digunakan:

  • Jika consumerTabId ditentukan, ID dapat digunakan oleh panggilan getUserMedia() di frame mana pun di tab yang diberikan yang memiliki asal keamanan yang sama.
  • Jika tidak ditentukan, mulai Chrome 116, ID dapat digunakan di frame mana pun dengan asal keamanan yang sama dalam proses render yang sama dengan pemanggil. Artinya, ID stream yang diperoleh di pekerja layanan dapat digunakan dalam dokumen di luar layar.

Sebelum Chrome 116, jika consumerTabId tidak ditentukan, ID stream dibatasi untuk asal keamanan, proses render, dan frame render pemanggil.

Pelajari lebih lanjut

Untuk mempelajari lebih lanjut cara menggunakan chrome.tabCapture API, lihat Perekaman audio dan pengambilan screenshot. Hal ini menunjukkan cara menggunakan tabCapture dan API terkait untuk mengatasi sejumlah kasus penggunaan umum.

Jenis

CaptureInfo

Properti

  • layar penuh

    boolean

    Menentukan apakah elemen di tab yang diambil berada dalam mode layar penuh.

  • Status pengambilan baru tab.

  • tabId

    angka

    ID tab yang statusnya berubah.

CaptureOptions

Properti

GetMediaStreamOptions

Chrome 71+

Properti

  • consumerTabId

    angka opsional

    ID tab opsional dari tab yang nantinya akan memanggil getUserMedia() untuk menggunakan stream. Jika tidak ditentukan, stream yang dihasilkan hanya dapat digunakan oleh ekstensi panggilan. Stream hanya dapat digunakan oleh frame di tab yang diberikan yang asal keamanannya cocok dengan asal tab consumber. Asal tab harus berupa asal yang aman, misalnya HTTPS.

  • targetTabId

    angka opsional

    ID tab opsional dari tab yang akan diambil. Jika tidak ditentukan, tab aktif saat ini akan dipilih. Hanya tab yang telah diberikan izin activeTab untuk ekstensi yang dapat digunakan sebagai tab target.

MediaStreamConstraint

Properti

  • wajib

    objek

  • opsional

    objek opsional

TabCaptureState

Enum

"pending"

"active"

"stopped"

"error"

Metode

capture()

Hanya latar depan
chrome.tabCapture.capture(
  options: CaptureOptions,
  callback: function,
)
: void

Mengambil area yang terlihat dari tab yang saat ini aktif. Pengambilan hanya dapat dimulai di tab yang saat ini aktif setelah ekstensi telah dipanggil, mirip dengan cara kerja activeTab. Pengambilan dipertahankan di seluruh navigasi halaman dalam tab, dan berhenti saat tab ditutup, atau aliran media ditutup oleh ekstensi.

Parameter

  • Mengonfigurasi aliran media yang ditampilkan.

  • callback

    fungsi

    Parameter callback terlihat seperti:

    (stream: LocalMediaStream) => void

    • stream

      LocalMediaStream

getCapturedTabs()

Promise
chrome.tabCapture.getCapturedTabs(
  callback?: function,
)
: Promise<CaptureInfo[]>

Menampilkan daftar tab yang telah meminta pengambilan atau sedang diambil, yaitu status != stopped dan status != error. Hal ini memungkinkan ekstensi memberi tahu pengguna bahwa ada pengambilan tab yang ada yang akan mencegah pengambilan tab baru berhasil (atau untuk mencegah permintaan berlebihan untuk tab yang sama).

Parameter

  • callback

    fungsi opsional

    Parameter callback terlihat seperti:

    (result: CaptureInfo[]) => void

Hasil

  • Promise<CaptureInfo[]>

    Chrome 116+

    Menampilkan Promise yang diselesaikan dengan CaptureInfo[] untuk tab yang diambil.

    Promise hanya didukung untuk Manifest V3 dan yang lebih baru, platform lain harus menggunakan callback.

getMediaStreamId()

Promise Chrome 71+
chrome.tabCapture.getMediaStreamId(
  options?: GetMediaStreamOptions,
  callback?: function,
)
: Promise<string>

Membuat ID stream untuk mengambil tab target. Mirip dengan metode chrome.tabCapture.capture(), tetapi menampilkan ID aliran media, bukan aliran media, ke tab konsumen.

Parameter

  • opsi
  • callback

    fungsi opsional

    Parameter callback terlihat seperti:

    (streamId: string) => void

    • streamId

      string

Hasil

  • Promise<string>

    Chrome 116+

    Menampilkan Promise yang diselesaikan dengan hasilnya. Jika berhasil, hasilnya adalah string buram yang dapat diteruskan ke getUserMedia() API untuk menghasilkan aliran media yang sesuai dengan tab target. streamId yang dibuat hanya dapat digunakan sekali dan akan habis masa berlakunya setelah beberapa detik jika tidak digunakan.

    Promise hanya didukung untuk Manifest V3 dan yang lebih baru, platform lain harus menggunakan callback.

Acara

onStatusChanged

chrome.tabCapture.onStatusChanged.addListener(
  callback: function,
)

Peristiwa yang diaktifkan saat status pengambilan tab berubah. Hal ini memungkinkan penulis ekstensi melacak status pengambilan tab agar elemen UI seperti tindakan halaman tetap sinkron.

Parameter