Deskripsi
Gunakan chrome.tabCapture
API untuk berinteraksi dengan aliran media tab.
Izin
tabCapture
Konsep dan penggunaan
API chrome.tabCapture memungkinkan Anda mengakses MediaStream
yang berisi video dan
audio dari tab saat ini. Fungsi ini hanya dapat dipanggil setelah pengguna memanggil ekstensi, seperti dengan
mengklik tombol tindakan ekstensi. Hal ini serupa dengan perilaku
Izin "activeTab"
.
Pertahankan audio sistem
Saat MediaStream
diperoleh untuk tab, audio di tab tersebut tidak akan diputar lagi
kepada pengguna. Hal ini serupa dengan perilaku fungsi getDisplayMedia()
saat
flag suppressLocalAudioPlayback
disetel ke benar (true).
Untuk terus memutar audio bagi 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 default
tujuan.
ID aliran data
Memanggil chrome.tabCapture.getMediaStreamId()
akan menampilkan ID aliran data. Ke nanti
mengakses MediaStream
dari ID, 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 terkait tempat
ID aliran data yang ditampilkan dapat digunakan:
- Jika
consumerTabId
ditentukan, ID ini dapat digunakan oleh panggilangetUserMedia()
di frame mana pun di tab tertentu yang memiliki asal keamanan yang sama. - Jika tidak ditentukan, mulai Chrome 116, ID dapat digunakan di frame apa pun dengan asal keamanan yang sama dalam proses {i>render<i} yang sama dengan pemanggil. Artinya, ID aliran data yang diperoleh dalam pekerja layanan dapat digunakan dalam dokumen di luar layar.
Sebelum Chrome 116, jika consumerTabId
tidak ditentukan, ID aliran data akan dibatasi untuk
asal keamanan, proses render, dan bingkai render pemanggil.
Pelajari lebih lanjut
Untuk mempelajari lebih lanjut cara menggunakan chrome.tabCapture
API, lihat
Perekaman audio dan screenshot. Ini menunjukkan cara menggunakan
tabCapture
dan API terkait untuk menyelesaikan sejumlah kasus penggunaan umum.
Jenis
CaptureInfo
Properti
-
layar penuh
boolean
Apakah elemen pada tab yang ditangkap berada dalam mode layar penuh.
-
status
Status perekaman tab yang baru.
-
tabId
angka
ID tab yang statusnya berubah.
CaptureOptions
Properti
-
audio
boolean opsional
-
audioConstraints
MediaStreamConstraint opsional
-
video
boolean opsional
-
videoConstraints
MediaStreamConstraint opsional
GetMediaStreamOptions
Properti
-
consumerTabId
angka opsional
ID tab opsional pada tab yang nantinya akan memanggil
getUserMedia()
untuk menggunakan streaming. Jika tidak ditentukan, streaming yang dihasilkan hanya dapat digunakan oleh ekstensi panggilan. Stream tersebut hanya dapat digunakan oleh frame pada tab tertentu yang origin keamanannya cocok dengan asal tab sumber. Asal tab harus berupa asal yang aman, mis. dengan HTTPS. -
targetTabId
angka opsional
ID tab opsional dari tab yang akan diambil. Jika tidak ditentukan, tab yang aktif saat ini akan dipilih. Hanya tab yang ekstensinya telah diberi izin
activeTab
yang dapat digunakan sebagai tab target.
MediaStreamConstraint
Properti
-
wajib
objek
-
opsional
objek opsional
TabCaptureState
Enum
"tertunda"
"aktif"
"dihentikan"
"error"
Metode
capture()
chrome.tabCapture.capture(
options: CaptureOptions,
callback: function,
)
Menangkap area yang terlihat dari tab yang sedang aktif. Perekaman hanya dapat dimulai pada tab yang sedang aktif setelah ekstensi dipanggil, mirip dengan cara kerja activeTab. Perekaman dipertahankan di seluruh navigasi halaman dalam tab, dan berhenti saat tab ditutup, atau streaming media ditutup oleh ekstensi.
Parameter
-
opsi
Mengonfigurasi streaming media yang ditampilkan.
-
callback
fungsi
Parameter
callback
terlihat seperti ini:(stream: LocalMediaStream) => void
-
feed
LocalMediaStream
-
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(
callback?: function,
)
Menampilkan daftar tab yang telah meminta penangkapan atau sedang ditangkap, yaitu status != stopped dan status != error. Hal ini memungkinkan ekstensi memberi tahu pengguna bahwa sudah ada pengambilan tab yang akan mencegah pengambilan tab baru berhasil (atau untuk mencegah permintaan berlebihan untuk tab yang sama).
Parameter
-
callback
fungsi opsional
Parameter
callback
terlihat seperti ini:(result: CaptureInfo[]) => void
-
hasil
-
Hasil
-
Promise<CaptureInfo[]>
Chrome 116 dan yang lebih baruPromise didukung di Manifes V3 dan yang lebih baru, tetapi callback disediakan untuk kompatibilitas mundur. Anda tidak dapat menggunakan keduanya pada panggilan fungsi yang sama. Tujuan promise yang di-resolve dengan jenis yang sama dengan yang diteruskan ke callback.
getMediaStreamId()
chrome.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
callback?: function,
)
Membuat ID aliran data untuk merekam tab target. Serupa dengan metode chrome.tabCapture.capture(), tetapi menampilkan ID streaming media, bukan streaming media, ke tab konsumen.
Parameter
-
opsi
GetMediaStreamOptions opsional
-
callback
fungsi opsional
Parameter
callback
terlihat seperti ini:(streamId: string) => void
-
streamId
string
-
Hasil
-
Promise<string>
Chrome 116 dan yang lebih baruPromise didukung di Manifes V3 dan yang lebih baru, tetapi callback disediakan untuk kompatibilitas mundur. Anda tidak dapat menggunakan keduanya pada panggilan fungsi yang sama. Tujuan promise yang di-resolve dengan jenis yang sama dengan yang diteruskan ke callback.
Acara
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
Peristiwa diaktifkan saat status perekaman tab berubah. Hal ini memungkinkan penulis ekstensi melacak status perekaman tab untuk menjaga elemen UI seperti tindakan halaman tetap sinkron.
Parameter
-
callback
fungsi
Parameter
callback
terlihat seperti ini:(info: CaptureInfo) => void
-
info
-