chrome.tabCapture

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'si, 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, getDisplayMedia() işlevinin suppressLocalAudioPlayback işareti doğru olarak ayarlandığında gösterdiği davranışa 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. Kimlikten daha sonra 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ısı yapıldı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çevede getUserMedia() ç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ığı.

  • Sekmenin yeni yakalama durumu.

  • tabId

    sayı

    Durumu değişen sekmenin kimliği.

CaptureOptions

Özellikler

GetMediaStreamOptions

Chrome 71 veya daha yeni bir sürüm

Ö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()

Yalnızca ön plan
chrome.tabCapture.capture(
  options: CaptureOptions,
  callback: function,
)
: void

Şu anda etkin olan sekmenin görünür alanını yakalar. Yakalama, activeTab'in çalışma şekline benzer şekilde, uzantı çağrıldıktan sonra yalnızca etkin olan sekmede başlatılabilir. 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ılara 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 veya daha yeni bir sürüm

    Yakalanan sekmeler için CaptureInfo[] ile çözümlenen bir Promise döndürür.

getMediaStreamId()

Chrome 71 veya daha yeni bir sürüm
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

İadeler

  • Promise<string>

    Chrome 116 veya daha yeni bir sürüm

    Sonuçla çözülen 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 iletilebilen opak bir dizedir. Oluşturulan streamId yalnızca bir kez kullanılabilir ve kullanılmazsa birkaç saniye sonra geçerliliğini yitirir.

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