Açıklama
Sekme medya akışlarıyla etkileşim kurmak için chrome.tabCapture API'yi kullanın.
İzinler
tabCaptureKavramlar ve kullanım
browser.tabCapture API, geçerli sekmenin video ve sesini içeren bir MediaStream öğesine erişmenizi sağlar. Yalnızca kullanıcı bir uzantıyı çağırdıktan sonra (ör. uzantının işlem düğmesini tıklayarak) çağrılabilir. Bu, "activeTab" izninin davranışına benzer.
Sistem sesini koruma
Bir sekme için MediaStream alındığında, o sekmedeki ses artık kullanıcıya çalınmaz. Bu, suppressLocalAudioPlayback işaretinin doğru olarak ayarlandığı getDisplayMedia() işlevinin davranışına benzer.
Kullanıcıya ses çalmaya devam etmek için aşağıdakileri kullanın:
const output = new AudioContext();
const source = output.createMediaStreamSource(stream);
source.connect(output.destination);
Bu işlem yeni bir AudioContext oluşturur ve sekmenin MediaStream sesini varsayılan hedefe bağlar.
Akış kimlikleri
browser.tabCapture.getMediaStreamId() çağrıldığında bir akış kimliği döndürülür. Daha sonra kimlikten bir MediaStream öğesine erişmek için aşağıdakileri kullanın:
navigator.mediaDevices.getUserMedia({
audio: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
video: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
});
Kullanım kısıtlamaları
getMediaStreamId() çağrıldıktan sonra, döndürülen akış kimliğinin kullanılabileceği yerlerle ilgili kısıtlamalar vardır:
consumerTabIdbelirtilirse kimlik, belirtilen sekmede aynı güvenlik kaynağına sahip herhangi bir çerçevedekigetUserMedia()çağrısı tarafından kullanılabilir.- Bu belirtilmediğinde, Chrome 116'dan itibaren kimlik, arayanla aynı oluşturma işleminde aynı güvenlik kaynağına sahip herhangi bir çerçevede kullanılabilir. Bu, hizmet çalışanında elde edilen bir akış kimliğinin ekran dışı dokümanda kullanılabileceği anlamına gelir.
Chrome 116'dan önce, consumerTabId belirtilmediğinde akış kimliği hem arayanın güvenlik kaynağı, oluşturma işlemi hem de oluşturma çerçevesiyle kısıtlanıyordu.
Daha fazla bilgi
browser.tabCapture API'nin nasıl kullanılacağı hakkında daha fazla bilgi edinmek için Ses kaydı ve ekran görüntüsü başlıklı makaleyi inceleyin. Bu örnekte, yaygın kullanım alanlarını çözmek için tabCapture ve ilgili API'lerin nasıl kullanılacağı gösterilmektedir.
Türler
CaptureInfo
Özellikler
-
tam ekran
boole
Yakalanan sekmedeki bir öğenin tam ekran modunda olup olmadığı.
-
durum
Sekmenin yeni yakalama durumu.
-
tabId
sayı
Durumu değişen sekmenin kimliği.
CaptureOptions
Özellikler
-
Ses
boole isteğe bağlı
-
audioConstraints
MediaStreamConstraint isteğe bağlı
-
video
boole isteğe bağlı
-
videoConstraints
MediaStreamConstraint isteğe bağlı
GetMediaStreamOptions
Özellikler
-
consumerTabId
number isteğe bağlı
Akışı kullanmak için daha sonra
getUserMedia()yöntemini çağıracak sekmenin isteğe bağlı sekme kimliği. Belirtilmezse sonuç akışı yalnızca çağrı uzantısı tarafından kullanılabilir. Akış, yalnızca güvenlik kaynağı tüketici sekmesinin kaynağıyla eşleşen belirli sekmedeki kareler tarafından kullanılabilir. Sekmenin kaynağı, HTTPS gibi güvenli bir kaynak olmalıdır. -
targetTabId
number isteğe bağlı
Ekran görüntüsü alınacak sekmenin isteğe bağlı sekme kimliği. Belirtilmezse mevcut etkin sekme seçilir. Yalnızca uzantıya
activeTabizni verilen sekmeler hedef sekme olarak kullanılabilir.
MediaStreamConstraint
Özellikler
-
zorunlu
nesne
-
isteğe bağlı
isteğe bağlı nesne
TabCaptureState
Enum
"pending"
"etkin"
"durduruldu"
"error"
Yöntemler
capture()
browser.tabCapture.capture(
options: CaptureOptions,
callback: function,
): void
Şu anda etkin olan sekmenin görünür alanını yakalar. Yakalama işlemi, activeTab'in çalışma şekline benzer şekilde, yalnızca uzantı çağrıldıktan sonra etkin olan sekmede başlatılabilir. Yakalama işlemi, sekme içindeki sayfa gezinmeleri boyunca devam eder ve sekme kapatıldığında veya medya akışı uzantı tarafından kapatıldığında durur.
Parametreler
-
seçenekler
Döndürülen medya akışını yapılandırır.
-
callback
işlev
callbackparametresi şu şekilde görünür:(stream: LocalMediaStream) => void
-
canlı oynatma
LocalMediaStream
-
getCapturedTabs()
browser.tabCapture.getCapturedTabs(): Promise<CaptureInfo[]>
Yakalama isteğinde bulunan veya yakalanmakta olan sekmelerin listesini döndürür (ör. durum != durduruldu ve durum != hata). Bu sayede uzantılar, kullanıcıya yeni bir sekme yakalama işleminin başarılı olmasını engelleyecek mevcut bir sekme yakalama işlemi olduğunu bildirebilir (veya aynı sekme için gereksiz istekleri önleyebilir).
İadeler
-
Promise<CaptureInfo[]>
Chrome 116 ve sonraki sürümler Chrome 148'den itibaren browser.*Yakalanan sekmeler için CaptureInfo[] ile çözümlenen bir Promise döndürür.
getMediaStreamId()
browser.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
): Promise<string>
Hedef sekmeyi yakalamak için bir akış kimliği oluşturur. chrome.tabCapture.capture() yöntemine benzer ancak tüketici sekmesine medya akışı yerine medya akışı kimliği döndürür.
Parametreler
-
seçenekler
GetMediaStreamOptions isteğe bağlı
İadeler
-
Promise<string>
Chrome 116 ve sonraki sürümler Chrome 148'den itibaren browser.*Sonuçla çözümlenen bir Promise döndürür. İşlem başarılı olursa sonuç, hedef sekmeye karşılık gelen bir medya akışı oluşturmak için
getUserMedia()API'sine iletilebilecek opak bir dizedir. OluşturulanstreamIdyalnızca bir kez kullanılabilir ve kullanılmazsa birkaç saniye sonra geçerliliğini yitirir.
Etkinlikler
onStatusChanged
browser.tabCapture.onStatusChanged.addListener(
callback: function,
)
Bir sekmenin yakalama durumu değiştiğinde tetiklenen etkinlik. Bu sayede uzantı yazarları, sayfa işlemleri gibi kullanıcı arayüzü öğelerini senkronize etmek için sekmelerin yakalama durumunu takip edebilir.
Parametreler
-
callback
işlev
callbackparametresi şu şekilde görünür:(info: CaptureInfo) => void
-
bilgi
-