chrome.tabCapture

更新日: 2026-09-25 robots: noindex

説明

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

権限

tabCapture

概要

chrome.tabCapture API を使用すると、現在のタブの動画と音声を含む MediaStream にアクセスできます。これは、ユーザーが拡張機能の操作ボタンをクリックするなどして拡張機能を呼び出した後にのみ呼び出すことができます。これは、activeTab 権限の動作に似ています。

システム音声の保持

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

ユーザーに音声を再生し続けるには、以下を使用します。

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 が指定されている場合、この ID は、同じセキュリティ オリジンを持つ指定されたタブの任意のフレームで getUserMedia() 呼び出しによって使用できます。
  • このパラメータが指定されていない場合、Chrome 116 以降では、呼び出し元と同じレンダリング プロセスで同じセキュリティ オリジンを持つ任意のフレームで ID を使用できます。つまり、サービス ワーカーで取得したストリーム ID をオフスクリーン ドキュメントで使用できます。

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

詳細

chrome.tabCapture API の使用方法について詳しくは、音声録音と画面キャプチャをご覧ください。このドキュメントでは、tabCapture と関連 API を使用して、一般的なユースケースを解決する方法について説明します。

型

CaptureInfo

プロパティ

  • 全画面表示

    ブール値

    キャプチャされているタブ内の要素が全画面表示モードかどうか。

  • ステータス

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

  • tabId

    数値

    ステータスが変更されたタブの ID。

CaptureOptions

プロパティ

GetMediaStreamOptions

Chrome 71 以降

プロパティ

  • consumerTabId

    number 省略可

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

  • targetTabId

    number 省略可

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

MediaStreamConstraint

プロパティ

  • 必須

    オブジェクト

  • 省略可

    オブジェクト(省略可)

TabCaptureState

列挙型

"pending"

「有効」

"stopped"

"error"

メソッド

capture()

フォアグラウンドのみ
chrome.tabCapture.capture(
  options: CaptureOptions,
  callback: function,
)
: void

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

パラメータ

  • オプション

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

  • callback

    関数

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

    (stream: LocalMediaStream) => void

    • ストリーム

      LocalMediaStream

getCapturedTabs()

Promise
chrome.tabCapture.getCapturedTabs(
  callback?: function,
)
: Promise<CaptureInfo[]>

キャプチャをリクエストしたタブ、またはキャプチャ中のタブ(status != stopped かつ status != error)のリストを返します。これにより、拡張機能は、既存のタブ キャプチャがあるために新しいタブ キャプチャが成功しないことをユーザーに通知できます(または、同じタブに対する重複したリクエストを防止できます)。

パラメータ

  • callback

    function 省略可

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

    (result: CaptureInfo[]) => void

戻り値

  • <CaptureInfo[]> を約束

    Chrome 116 以降

    キャプチャされたタブの CaptureInfo[] で解決される Promise を返します。

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

getMediaStreamId()

Promise Chrome 71 以降
chrome.tabCapture.getMediaStreamId(
  options?: GetMediaStreamOptions,
  callback?: function,
)
: Promise<string>

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

パラメータ

  • オプション
  • callback

    function 省略可

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

    (streamId: string) => void

    • streamId

      文字列

戻り値

  • Promise<string>

    Chrome 116 以降

    結果で解決される Promise を返します。成功すると、結果は不透明な文字列になります。この文字列を getUserMedia() API に渡すと、ターゲット タブに対応するメディア ストリームを生成できます。作成された streamId は 1 回しか使用できず、使用しない場合は数秒後に期限切れになります。

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

イベント

onStatusChanged

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

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

パラメータ

  • callback

    関数

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

    (info: CaptureInfo) => void