Deskripsi
Gunakan chrome.tabCapture
API untuk berinteraksi dengan streaming media tab.
Izin
tabCapture
Konsep dan penggunaan
chrome.tabCapture API memungkinkan Anda mengakses MediaStream
yang berisi video dan audio tab saat ini. Metode ini hanya dapat dipanggil setelah pengguna memanggil ekstensi, seperti dengan mengklik tombol tindakan ekstensi. Hal ini mirip dengan perilaku izin "activeTab"
.
Mempertahankan audio sistem
Jika MediaStream
diperoleh untuk tab, audio di tab tersebut tidak akan lagi diputar kepada pengguna. Hal ini mirip dengan perilaku fungsi getDisplayMedia()
saat flag suppressLocalAudioPlayback
disetel ke benar (true).
Untuk terus memutar audio kepada pengguna, gunakan perintah 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 streaming. Untuk mengakses MediaStream
dari ID nanti, gunakan kode 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 streaming yang ditampilkan dapat digunakan:
- Jika
consumerTabId
ditentukan, ID dapat digunakan oleh panggilangetUserMedia()
di frame mana pun dalam tab yang diberikan yang memiliki origin keamanan yang sama. - Jika tidak ditentukan, mulai Chrome 116, ID dapat digunakan di frame mana pun dengan origin keamanan yang sama dalam proses rendering yang sama dengan pemanggil. Artinya, ID streaming yang diperoleh di pekerja layanan dapat digunakan dalam dokumen di balik layar.
Sebelum Chrome 116, jika consumerTabId
tidak ditentukan, ID streaming dibatasi untuk origin keamanan, proses rendering, dan frame rendering pemanggil.
Pelajari lebih lanjut
Untuk mempelajari lebih lanjut cara menggunakan chrome.tabCapture
API, lihat Perekaman audio dan screenshot. Bagian ini menunjukkan cara menggunakan tabCapture
dan API terkait untuk menyelesaikan sejumlah kasus penggunaan umum.
Jenis
CaptureInfo
Properti
- layar penuh
boolean
Apakah elemen di tab yang direkam dalam mode layar penuh.
- status
Status perekaman baru tab.
- tabId
angka
ID tab yang statusnya berubah.
CaptureOptions
Properti
- audio
boolean opsional
- audioConstraints
MediaStreamConstraint opsional
- video
boolean opsional
- videoConstraints
MediaStreamConstraint opsional
GetMediaStreamOptions
Properti
- consumerTabId
nomor opsional
ID tab opsional dari tab yang nantinya akan memanggil
getUserMedia()
untuk menggunakan streaming. Jika tidak ditentukan, aliran yang dihasilkan hanya dapat digunakan oleh ekstensi yang memanggil. Aliran hanya dapat digunakan oleh frame di tab tertentu yang asal keamanannya cocok dengan asal tab konsumen. Asal tab harus berupa asal yang aman, misalnya HTTPS. - targetTabId
nomor opsional
ID tab opsional dari tab yang akan direkam. Jika tidak ditentukan, tab aktif saat ini akan dipilih. Hanya tab yang telah diberi izin
activeTab
oleh ekstensi yang dapat digunakan sebagai tab target.
MediaStreamConstraint
Properti
- wajib
objek
- opsional
objek opsional
TabCaptureState
Enum
"pending"
"active"
"stopped"
"error"
Metode
capture()
chrome.tabCapture.capture(
options: CaptureOptions,
callback: function,
): void
Mengambil area yang terlihat dari tab yang sedang aktif. Perekaman hanya dapat dimulai di tab yang aktif saat ini setelah ekstensi 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
- opsi
Mengonfigurasi aliran media yang ditampilkan.
- callback
fungsi
Parameter
callback
terlihat seperti:(stream: LocalMediaStream) => void
- feed
LocalMediaStream
-
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(): Promise<CaptureInfo[]>
Menampilkan daftar tab yang telah meminta pengambilan atau sedang diambil, yaitu status != berhenti dan status != error. Hal ini memungkinkan ekstensi memberi tahu pengguna bahwa ada pengambilan tab yang ada yang akan mencegah keberhasilan pengambilan tab baru (atau untuk mencegah permintaan berlebihan untuk tab yang sama).
Hasil
-
Promise<CaptureInfo[]>
Chrome 116+
getMediaStreamId()
chrome.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
): Promise<string>
Membuat ID aliran untuk merekam tab target. Mirip dengan metode chrome.tabCapture.capture(), tetapi menampilkan ID streaming media, bukan streaming media, ke tab konsumen.
Parameter
- opsi
GetMediaStreamOptions opsional
Hasil
-
Promise<string>
Chrome 116+
Acara
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
Peristiwa dipicu saat status pengambilan tab berubah. Hal ini memungkinkan penulis ekstensi melacak status pengambilan tab agar elemen UI seperti tindakan halaman tetap sinkron.
Parameter
- callback
fungsi
Parameter
callback
terlihat seperti:(info: CaptureInfo) => void
- info
-