chrome.tabCapture

Açıklama

Sekme medya akışlarıyla etkileşimde bulunmak için chrome.tabCapture API'sini kullanın.

İzinler

tabCapture

Kavramlar ve kullanım

chrome.tabCapture API, video ve resim içeren bir MediaStream'a erişmenizi sağlar mevcut sekmenin sesini tıklayın. Yalnızca kullanıcı bir uzantıyı çağırdıktan sonra (örneğin, Uzantının işlem düğmesini tıklayarak. Bu, eskiden olduğu gibi "activeTab" izni.

Sistem sesini koru

Bir sekme için MediaStream edinildiğinde o sekmedeki ses çalınmaz kullanıcıya gösterir. Bu, aşağıdaki durumlardaki getDisplayMedia() işlevinin davranışına benzer: suppressLocalAudioPlayback işareti doğru değerine ayarlanır.

Kullanıcıya ses çalmaya devam etmek için şunu 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ılana bağlar seçeceğiz.

Akış kimlikleri

chrome.tabCapture.getMediaStreamId() çağrısı yapıldığında bir akış kimliği döndürülür. Daha sonraya kimlikten bir MediaStreamya erişmek için şunu 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ından sonra döndürülen akış kimliği kullanılabilir:

  • consumerTabId belirtilirse kimlik, getUserMedia() aynı güvenlik kaynağına sahip sekmesini seçin.
  • Bu belirtilmediğinde, Chrome 116'dan itibaren kimlik çağrı yapanla aynı oluşturma işlemine sahip aynı güvenlik kaynağı. Bu, edinilen akış kimliğinin ekran dışı bir dokümanda kullanılabilir.

Chrome 116'dan önce, consumerTabId belirtilmediğinde akış kimliği her ikisiyle de kısıtlanmıştı. arayanın güvenlik kaynağı, oluşturma işlemi ve oluşturma çerçevesi.

Daha fazla bilgi

chrome.tabCapture API'nin nasıl kullanılacağı hakkında daha fazla bilgi için bkz. Ses kaydı ve ekran görüntüsü. Bu görselde, tabCapture ve ilgili API'ler sayesinde bir dizi yaygın kullanım alanına çözüm sunar.

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 ve sonraki sürümler 'nı inceleyin.

Özellikler

  • consumerTabId

    sayı isteğe bağlı

    Daha sonra akışı kullanmak için getUserMedia() yöntemini çağıracak olan sekmenin isteğe bağlı sekme kimliği. Belirtilmezse sonuçta ortaya çıkan akış yalnızca telefon uzantısı tarafından kullanılabilir. Akış yalnızca ilgili sekmede bulunan ve güvenlik kaynağı konsol sekmenin kaynağıyla eşleşen çerçeveler tarafından kullanılabilir. Sekmenin kaynağı güvenli bir kaynak olmalıdır.Ör. HTTPS'ye dokunun.

  • targetTabId

    sayı isteğe bağlı

    Yakalanacak sekmenin isteğe bağlı sekme kimliği. Belirtilmezse mevcut etkin sekme seçilir. Yalnızca uzantıya activeTab izninin verildiği sekmeler hedef sekme olarak kullanılabilir.

MediaStreamConstraint

Özellikler

  • zorunlu

    nesne

  • isteğe bağlı

    nesne isteğe bağlı

TabCaptureState

Enum

"beklemede"

"active"

"durduruldu"

"error"

Yöntemler

capture()

Yalnızca ön plan 'nı inceleyin.
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ılandıktan sonra o anda etkin olan sekmede başlatılabilir. Yakalama, sekmedeki sayfada gezinirken korunur 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.

  • geri çağırma

    işlev

    callback parametresi şu şekilde görünür:

    (stream: LocalMediaStream) => void

    • akış

      LocalMediaStream

getCapturedTabs()

Söz 'nı inceleyin.
chrome.tabCapture.getCapturedTabs(
  callback?: function,
)

Yakalama isteğinde bulunan veya yakalanmakta olan sekmelerin bir listesini döndürür (ör. durum != durduruldu ve durum != hata). Böylece uzantılar, yeni bir sekme yakalamanın başarılı olmasını (veya aynı sekme için gereksiz istekleri önleyecek) mevcut bir sekme yakalaması olduğunu kullanıcıya bildirebilir.

Parametreler

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (result: CaptureInfo[]) => void

İadeler

  • Promise<CaptureInfo[]>

    Chrome 116 ve sonraki sürümler 'nı inceleyin.

    Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.

getMediaStreamId()

Söz Chrome 71 ve sonraki sürümler
chrome.tabCapture.getMediaStreamId(
  options?: GetMediaStreamOptions,
  callback?: function,
)

Hedef sekmeyi yakalamak için akış kimliği oluşturur. chrome.tabCapture.capture() yöntemine benzer, ancak tüketici sekmesine medya akışı yerine bir medya akışı kimliği döndürür.

Parametreler

  • seçenekler

    GetMediaStreamOptions isteğe bağlı

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (streamId: string) => void

    • streamId

      dize

İadeler

  • Promise<dize>

    Chrome 116 ve sonraki sürümler 'nı inceleyin.

    Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.

Etkinlikler

onStatusChanged

chrome.tabCapture.onStatusChanged.addListener(
  callback: function,
)

Bir sekmenin yakalama durumu değiştiğinde etkinlik tetiklenir. Bu sayede uzantı yazarları, sayfa işlemleri gibi kullanıcı arayüzü öğelerini senkronize halde tutmak için sekmelerin yakalama durumunu izleyebilir.

Parametreler

  • geri çağırma

    işlev

    callback parametresi şu şekilde görünür:

    (info: CaptureInfo) => void