Açıklama
Sekme medya akışlarıyla etkileşimde bulunmak için chrome.tabCapture
API'yi kullanın.
İzinler
tabCapture
Genel bakış
chrome.tabCapture API, geçerli sekmenin videosunu ve sesini içeren bir MediaStream'e erişmenizi sağlar. Yalnızca, kullanıcı bir uzantıyı çağırdıktan sonra (örneğin, uzantının işlem düğmesini tıklayarak) çağrılabilir. Bu, activeTab izninin davranışına benzer.
Sistem sesi saklanıyor
Bir sekme için MediaStream edinildiğinde, bu sekmedeki ses artık kullanıcıya çalınmaz. Bu, suppressLocalAudioPlayback
işareti doğru değerine ayarlandığında 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 sekmedeki MediaStream
öğesinin sesini varsayılan hedefe bağlar.
Akış kimlikleri
chrome.tabCapture.getMediaStreamId çağrısı yapıldığında bir akış kimliği döndürülür. Daha sonra kimlikten bir MediaStream'e 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:
consumerTabId
belirtilirse kimlik, aynı güvenlik kaynağına sahip ilgili sekmedeki herhangi bir çerçevede birgetUserMedia()
çağrısı tarafından kullanılabilir.- Bu belirtilmezse Chrome 116'dan itibaren kimlik, çağrıyı yapanla aynı oluşturma işleminde aynı güvenlik kaynağına sahip herhangi bir çerçevede kullanılabilir. Bu, Service Worker'dan alınan bir akış kimliğinin ekran dışındaki bir dokümanda kullanılabileceği anlamına gelir.
Chrome 116'dan önce bir consumerTabId
belirtilmediğinde akış kimliği, arayanın hem güvenlik kaynağı, oluşturma işlemi hem de oluşturma çerçevesiyle sınırlıydı.
Daha fazla bilgi
chrome.tabCapture
API'nin nasıl kullanılacağı hakkında daha fazla bilgi için Ses kaydı ve ekran görüntüsü başlıklı makaleyi inceleyin. Bu görselde, yaygın kullanım alanlarının bir kısmı için tabCapture
ve ilgili API'lerin nasıl kullanılacağı gösterilmektedir.
Türler
CaptureInfo
Özellikler
-
tam ekran
boolean
Yakalanan sekmedeki bir öğenin tam ekran modunda olup olmadığı.
-
status
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
numara isteğe bağlı
Daha sonra akışı tüketmek için
getUserMedia()
yöntemini çağıracak olan sekmenin isteğe bağlı sekme kimliği. Belirtilmezse elde edilen akış yalnızca arama uzantısı tarafından kullanılabilir. Akış yalnızca belirtilen sekmedeki güvenlik kaynağı, kullanıcı sekmesinin kaynağıyla eşleşen kareler tarafından kullanılabilir. Sekmenin kaynağı güvenli bir kaynak (ör. HTTPS) olmalıdır. -
targetTabId
numara isteğe bağlı
Yakalanacak sekmenin isteğe bağlı sekme kimliği. Belirtilmezse geçerli etkin sekme seçilir. Yalnızca uzantıya
activeTab
izni verilen sekmeler hedef sekme olarak kullanılabilir.
MediaStreamConstraint
Özellikler
-
zorunlu
nesne
-
isteğe bağlı
isteğe bağlı
TabCaptureState
Enum
"durdurdu"
"error"
Yöntemler
capture()
chrome.tabCapture.capture(
options: CaptureOptions,
callback: function,
)
Geçerli olarak etkin olan sekmenin görünür alanını yakalar. Yakalama, activeTab'in çalışma şekline benzer şekilde, yalnızca uzantı çağrıldıktan sonra o anda etkin olan sekmede başlatılabilir. Yakalama, sekme içindeki sayfa gezinmelerinde korunur ve sekme kapatıldığında ya da medya akışı uzantı tarafından kapatıldığında durur.
Parametreler
-
seçenekler
Döndürülen medya akışını yapılandırır.
-
geri çağırma
işlev
callback
parametresi şu şekilde görünür:(stream: LocalMediaStream) => void
-
akış
LocalMediaStream
-
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(
callback?: function,
)
Yakalanma isteğinde bulunan veya yakalanan sekmelerin listesini döndürür (ör. durum != durduruldu ve durum != hatası). Böylece uzantılar, yeni sekme yakalama işleminin başarılı olmasını (veya aynı sekme için gereksiz istekleri önleyecek) mevcut bir sekme yakalaması bulunduğunu kullanıcıya bildirebilir.
Parametreler
-
geri çağırma
Functions (isteğe bağlı)
callback
parametresi şu şekilde görünür:(result: CaptureInfo[]) => void
-
sonuç
-
İlerlemeler
-
Promise<CaptureInfo[]>
Chrome 116 ve sonraki sürümlerVaatler yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformların geri çağırmaları kullanması gerekir.
getMediaStreamId()
chrome.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
callback?: function,
)
Hedef sekmeyi yakalamak için bir akış kimliği oluşturur. chrome.tabCapture.capture() yöntemine benzer, ancak tüketici sekmesine bir medya akışı yerine bir medya akışı kimliği döndürür.
Parametreler
-
seçenekler
GetMediaStreamOptions isteğe bağlı
-
geri çağırma
Functions (isteğe bağlı)
callback
parametresi şu şekilde görünür:(streamId: string) => void
-
streamId
dize
-
İlerlemeler
-
Söz<dize>
Chrome 116 ve sonraki sürümlerVaatler yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformların geri çağırmaları kullanması gerekir.
Etkinlikler
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
Etkinlik, bir sekmenin yakalama durumu değiştiğinde tetiklenir. Bu, uzantı yazarlarının sayfa işlemleri gibi kullanıcı arayüzü öğelerini senkronize tutmak için sekmelerin yakalama durumunu takip etmesine olanak tanır.
Parametreler
-
geri çağırma
işlev
callback
parametresi şu şekilde görünür:(info: CaptureInfo) => void
-
bilgi
-