Açıklama
Sekme medya akışlarıyla etkileşim kurmak için chrome.tabCapture
API'sini kullanın.
İzinler
tabCapture
Kavramlar ve kullanım
chrome.tabCapture API, geçerli sekmenin videosunu 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 oynatılmaz. Bu, suppressLocalAudioPlayback
işareti doğru olarak 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 sekmenin MediaStream
sesini varsayılan hedefe bağlar.
Akış kimlikleri
chrome.tabCapture.getMediaStreamId()
çağrısı bir akış kimliği döndürür. Daha sonra kimlikten MediaStream
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()
numarası arandıktan sonra, döndürülen yayın kimliğinin kullanılabileceği yerlerle ilgili kısıtlamalar vardır:
consumerTabId
belirtilmişse kimlik, aynı güvenlik kaynağına sahip olan belirli sekmedeki herhangi bir çerçevedegetUserMedia()
çağrısı tarafından kullanılabilir.- Bu belirtilmediğinde, Chrome 116'dan itibaren kimlik, arayanla aynı oluşturma sürecinde aynı güvenlik kaynağına sahip herhangi bir çerçevede kullanılabilir. Bu, bir hizmet çalışanında elde edilen akış kimliğinin ekran dışı dokümanda kullanılabileceği anlamına gelir.
Chrome 116'dan önce, consumerTabId
belirtilmediğinde akış kimliği, hem güvenlik kaynağı hem de arayanın oluşturma işlemi ve oluşturma çerçevesiyle kısıtlanıyordu.
Daha fazla bilgi
chrome.tabCapture
API'yi kullanma hakkında daha fazla bilgi edinmek için Ses kaydı ve ekran görüntüsü başlıklı makaleyi inceleyin. Bu dokümanda, tabCapture
ve ilgili API'lerin bir dizi yaygın kullanım alanında nasıl kullanılacağı gösterilmektedir.
Türler
CaptureInfo
Özellikler
-
tam ekran
boolean
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
boolean isteğe bağlı
-
audioConstraints
MediaStreamConstraint isteğe bağlı
-
video
boolean 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()
işlevini çağıracak sekmenin isteğe bağlı sekme kimliği. Belirtilmezse sonuçta elde edilen akış yalnızca arayan uzantı tarafından kullanılabilir. Akış yalnızca, güvenlik kaynağı tüketici sekmesinin kaynağıyla eşleşen, söz konusu sekmedeki çerçeveler tarafından kullanılabilir. Sekmenin kaynağı güvenli bir kaynak olmalıdır (ör. HTTPS). -
targetTabId
number isteğe bağlı
Yakalanacak sekmenin isteğe bağlı sekme kimliği. Belirtilmezse etkin olan sekme seçilir. Hedef sekme olarak yalnızca uzantıya
activeTab
izni verilen sekmeler kullanılabilir.
MediaStreamConstraint
Özellikler
-
zorunlu
nesne
-
isteğe bağlı
object isteğe bağlı
TabCaptureState
Enum
"pending"
"active"
"stopped"
"error"
Yöntemler
capture()
chrome.tabCapture.capture(
options: CaptureOptions,
callback: function,
): void
Şu anda etkin olan sekmenin görünür alanını yakalar. Yakalamaya yalnızca uzantı çağrıldıktan sonra, activeTab'in çalışma şekline benzer şekilde, etkin olan sekmede başlanabilir. Kayıt, sekmedeki 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
callback
parametresi şu şekilde görünür:(stream: LocalMediaStream) => void
-
canlı oynatma
LocalMediaStream
-
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(): Promise<CaptureInfo[]>
Yakalanması istenen veya yakalanmakta olan sekmelerin listesini döndürür. Diğer bir deyişle, durum != stopped ve durum != error. Bu sayede uzantılar, kullanıcıya yeni bir sekme kaydının başarılı olmasını engelleyecek mevcut bir sekme kaydı olduğunu bildirebilir (veya aynı sekme için gereksiz istekleri önleyebilir).
İadeler
-
Promise<CaptureInfo[]>
Chrome 116 veya daha yeni bir sürüm
getMediaStreamId()
chrome.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 veya daha yeni bir sürüm
Etkinlikler
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
Bir sekmenin yakalama durumu değiştiğinde tetiklenen etkinlik. 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
-
callback
işlev
callback
parametresi şu şekilde görünür:(info: CaptureInfo) => void
-
bilgi
-