chrome.tabCapture

説明

chrome.tabCapture API を使用してタブのメディア ストリームを操作します。

権限

tabCapture

コンセプトと使用方法

chrome.tabCapture API を使用すると、動画とファイルを含む MediaStream にアクセスできます。 読み上げることもできますこれは、ユーザーが拡張機能を呼び出した後にのみ呼び出すことができます。 拡張機能の操作ボタンをクリックする。これは Pod の IP アドレス "activeTab" 権限。

システム音声を保持

タブで MediaStream を取得すると、そのタブの音声は再生されなくなります。 提供します。これは、次の場合の getDisplayMedia() 関数の動作に似ています。 suppressLocalAudioPlayback フラグが true に設定されている。

ユーザーへの音声再生を続けるには、次のように記述します。

const output = new AudioContext();
const source = output.createMediaStreamSource(stream);
source.connect(output.destination);

これにより、新しい AudioContext が作成され、タブの MediaStream の音声がデフォルトに接続されます。 あります。

ストリーム ID

chrome.tabCapture.getMediaStreamId() を呼び出すと、ストリーム ID が返されます。後で配信 ID から MediaStream にアクセスするには、次のように記述します。

navigator.mediaDevices.getUserMedia({
  audio: {
    mandatory: {
      chromeMediaSource: "tab",
      chromeMediaSourceId: id,
    },
  },
  video: {
    mandatory: {
      chromeMediaSource: "tab",
      chromeMediaSourceId: id,
    },
  },
});

使用制限

getMediaStreamId() を呼び出した後は、 返されたストリーム ID を使用できます。

  • consumerTabId を指定すると、getUserMedia() 呼び出し内の任意のフレームで ID を セキュリティオリジンが同じタブに 割り当てられています
  • この値を指定しない場合、Chrome 116 以降、 呼び出し元と同じレンダリング プロセスで生成できます。つまり、この IP アドレスからストリーム ID が オフスクリーン ドキュメントで使用できます。

Chrome 116 より前では、consumerTabId を指定しなかった場合、ストリーム ID は両方に制限されていました。 呼び出し元のセキュリティ オリジン、レンダリング プロセス、レンダリング フレーム。

その他の情報

chrome.tabCapture API の使用方法について詳しくは、以下をご覧ください。 音声録音とスクリーン キャプチャ。ここでは、Terraform を使用して tabCapture と関連 API を使用して、多くの一般的なユースケースを解決します。

CaptureInfo

プロパティ

  • 全画面表示

    ブール値

    キャプチャするタブの要素が全画面モードかどうか。

  • タブの新しいキャプチャ ステータス。

  • tabId

    数値

    ステータスが変化したタブの ID。

CaptureOptions

プロパティ

GetMediaStreamOptions

Chrome 71 以降

プロパティ

  • consumerTabId

    数値(省略可)

    後で getUserMedia() を呼び出してストリームを使用するタブのオプションのタブ ID。指定しない場合、結果のストリームは呼び出し元の拡張機能のみが使用できます。ストリームは、指定されたタブ内で、セキュリティ オリジンがコンサンバー タブのオリジンと一致するフレームでのみ使用できます。タブの生成元は、安全な生成元である必要があります(例:提供します。

  • targetTabId

    数値(省略可)

    キャプチャされるタブのタブ ID(省略可)。指定しない場合は、現在アクティブなタブが選択されます。拡張機能に activeTab 権限が付与されているタブのみをターゲット タブとして使用できます。

MediaStreamConstraint

プロパティ

  • 必須

    オブジェクト

  • 省略可

    オブジェクト(省略可)

TabCaptureState

列挙型

「保留中」

「有効」

「停止」

「error」

メソッド

capture()

<ph type="x-smartling-placeholder"></ph> フォアグラウンドのみ
chrome.tabCapture.capture(
  options: CaptureOptions,
  callback: function,
)

現在アクティブなタブの表示領域をキャプチャします。キャプチャは、activeTab の仕組みと同様に、拡張機能の呼び出し後に、現在アクティブなタブでのみ開始できます。キャプチャはタブ内のページ ナビゲーション全体で維持され、タブを閉じるか、メディア ストリームが拡張機能によって閉じられると停止します。

パラメータ

  • オプション

    返されるメディア ストリームを構成します。

  • callback

    関数

    callback パラメータは次のようになります。

    (stream: LocalMediaStream) => void

    • ストリーム

      LocalMediaStream

getCapturedTabs()

<ph type="x-smartling-placeholder"></ph> 約束
chrome.tabCapture.getCapturedTabs(
  callback?: function,
)

キャプチャをリクエストしたタブ、またはキャプチャ中のタブのリスト(ステータス != 停止、ステータス != エラー)を返します。これにより、拡張機能は、既存のタブのキャプチャがあると、新しいタブのキャプチャが成功しない(または同じタブに対する冗長なリクエストを防止する)ことをユーザーに知らせることができます。

パラメータ

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    (result: CaptureInfo[]) => void

戻り値

  • Promise&lt;CaptureInfo[]&gt;

    Chrome 116 以降

    Promise は Manifest V3 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。

getMediaStreamId()

<ph type="x-smartling-placeholder"></ph> 約束 Chrome 71 以降 をご覧ください。
chrome.tabCapture.getMediaStreamId(
  options?: GetMediaStreamOptions,
  callback?: function,
)

ターゲット タブをキャプチャするためのストリーム ID を作成します。chrome.tabCapture.capture() メソッドに似ていますが、メディア ストリームではなくメディア ストリーム ID をコンシューマのタブに返します。

パラメータ

  • オプション

    GetMediaStreamOptions (省略可)

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    (streamId: string) => void

    • streamId

      文字列

戻り値

  • Promise<文字列>

    Chrome 116 以降

    Promise は Manifest V3 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。

イベント

onStatusChanged

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

タブのキャプチャ ステータスが変更されたときに発生するイベント。これにより、拡張機能の作成者はタブのキャプチャ ステータスを追跡し、ページ操作などの UI 要素の同期を維持できます。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

    (info: CaptureInfo) => void