chrome.tabCapture

توضیحات

از chrome.tabCapture API برای تعامل با جریان‌های رسانه برگه استفاده کنید.

مجوزها

tabCapture

مفاهیم و کاربرد

chrome.tabCapture API به شما امکان می دهد به MediaStream حاوی ویدیو و صدای برگه فعلی دسترسی داشته باشید. فقط پس از فراخوانی یک برنامه افزودنی توسط کاربر، مانند کلیک کردن روی دکمه عملکرد برنامه افزودنی، می توان آن را فراخوانی کرد. این شبیه به رفتار مجوز "activeTab" است.

حفظ صدای سیستم

هنگامی که یک MediaStream برای یک برگه به ​​دست می آید، صدای موجود در آن برگه دیگر برای کاربر پخش نمی شود. این شبیه رفتار تابع getDisplayMedia() است وقتی که پرچم suppressLocalAudioPlayback روی true تنظیم شده باشد.

برای ادامه پخش صدا برای کاربر، از موارد زیر استفاده کنید:

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

این یک AudioContext جدید ایجاد می کند و صدای MediaStream برگه را به مقصد پیش فرض متصل می کند.

شناسه‌های جریان

با فراخوانی chrome.tabCapture.getMediaStreamId() شناسه جریان برمی گردد. برای دسترسی بعدی به MediaStream از ID، از موارد زیر استفاده کنید:

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

محدودیت های استفاده

پس از فراخوانی getMediaStreamId() ، محدودیت هایی در مورد محل استفاده از شناسه جریان برگشتی وجود دارد:

  • اگر consumerTabId مشخص شده باشد، شناسه را می توان توسط یک فراخوانی getUserMedia() در هر فریمی در برگه داده شده که منشاء امنیتی یکسانی دارد استفاده کرد.
  • هنگامی که این مورد مشخص نیست، با شروع در Chrome 116، شناسه را می توان در هر قاب با منبع امنیتی یکسان در فرآیند رندر مشابه با تماس گیرنده استفاده کرد. این بدان معنی است که یک شناسه جریان به دست آمده در یک سرویس دهنده می تواند در یک سند خارج از صفحه استفاده شود.

قبل از Chrome 116، هنگامی که یک consumerTabId مشخص نشده بود، شناسه جریان به مبدا امنیتی، فرآیند رندر و فریم رندر تماس‌گیرنده محدود می‌شد.

بیشتر بدانید

برای کسب اطلاعات بیشتر در مورد نحوه استفاده از chrome.tabCapture API، به ضبط صدا و ضبط صفحه مراجعه کنید. این نشان می دهد که چگونه می توان از tabCapture و API های مرتبط برای حل تعدادی از موارد استفاده رایج استفاده کرد.

انواع

CaptureInfo

خواص

  • تمام صفحه

    بولی

    اینکه آیا یک عنصر در برگه در حال ضبط در حالت تمام صفحه است.

  • وضعیت

    وضعیت ضبط جدید برگه.

  • tabId

    شماره

    شناسه برگه ای که وضعیت آن تغییر کرده است.

CaptureOptions

خواص

  • صوتی

    بولی اختیاری

  • محدودیت های صوتی

    MediaStreamConstraint اختیاری است

  • ویدئو

    بولی اختیاری

  • محدودیت های ویدئویی

    MediaStreamConstraint اختیاری است

GetMediaStreamOptions

Chrome 71+

خواص

  • ConsumerTabId

    شماره اختیاری

    شناسه برگه اختیاری برگه که بعداً getUserMedia() را فراخوانی می‌کند تا جریان را مصرف کند. اگر مشخص نشده باشد، جریان حاصل فقط توسط برنامه افزودنی فراخوان قابل استفاده است. این جریان را فقط می‌توان توسط فریم‌هایی در برگه داده شده استفاده کرد که منشاء امنیتی آن‌ها با مبدا برگه مصرف‌کننده مطابقت دارد. مبدا برگه باید یک منبع امن باشد، به عنوان مثال HTTPS.

  • targetTabId

    شماره اختیاری

    شناسه برگه اختیاری برگه ای که گرفته می شود. اگر مشخص نشده باشد، تب فعال فعلی انتخاب خواهد شد. فقط برگه هایی که مجوز activeTab برای آنها به برنامه افزودنی اعطا شده است می توانند به عنوان برگه هدف استفاده شوند.

MediaStreamConstraint

خواص

  • اجباری

    شی

  • اختیاری

    شی اختیاری

TabCaptureState

Enum

"در انتظار"

"فعال"

"متوقف شد"

"خطا"

روش ها

capture()

فقط پیش زمینه
chrome.tabCapture.capture(
  options: CaptureOptions,
  callback: function,
)

ناحیه قابل مشاهده برگه فعال فعلی را می گیرد. ضبط را فقط می توان پس از فراخوانی برنامه افزودنی در برگه فعال فعلی شروع کرد، مشابه روشی که activeTab کار می کند. ضبط در سراسر پیمایش‌های صفحه در برگه حفظ می‌شود و وقتی برگه بسته می‌شود یا جریان رسانه توسط برنامه افزودنی بسته می‌شود، متوقف می‌شود.

پارامترها

  • گزینه ها

    جریان رسانه برگشتی را پیکربندی می کند.

  • پاسخ به تماس

    تابع

    پارامتر callback به نظر می رسد:

    (stream: LocalMediaStream) => void

    • جریان

      LocalMediaStream

getCapturedTabs()

قول بده
chrome.tabCapture.getCapturedTabs(
  callback?: function,
)

فهرستی از برگه‌هایی را که درخواست ضبط کرده‌اند یا در حال ضبط هستند، برمی‌گرداند، یعنی وضعیت != توقف و وضعیت != خطا. این به برنامه های افزودنی اجازه می دهد تا به کاربر اطلاع دهند که یک برگه موجود وجود دارد که مانع از موفقیت گرفتن یک برگه جدید می شود (یا از درخواست های اضافی برای همان برگه جلوگیری می کند).

پارامترها

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    (result: CaptureInfo[]) => void

برمی گرداند

  • Promise< CaptureInfo []>

    Chrome 116+

    Promises در Manifest V3 و نسخه های جدیدتر پشتیبانی می شود، اما callbacks برای سازگاری به عقب ارائه شده است. شما نمی توانید از هر دو در یک فراخوانی تابع استفاده کنید. وعده با همان نوعی که به callback ارسال می شود حل می شود.

getMediaStreamId()

Promise Chrome 71+
chrome.tabCapture.getMediaStreamId(
  options?: GetMediaStreamOptions,
  callback?: function,
)

یک شناسه جریان برای گرفتن برگه هدف ایجاد می کند. مشابه روش chrome.tabCapture.capture() است، اما شناسه جریان رسانه را به جای جریان رسانه، به برگه مصرف کننده برمی گرداند.

پارامترها

  • گزینه ها

    GetMediaStreamOptions اختیاری است

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    (streamId: string) => void

    • streamId

      رشته

برمی گرداند

  • قول<رشته>

    Chrome 116+

    Promises در Manifest V3 و نسخه های جدیدتر پشتیبانی می شود، اما callbacks برای سازگاری به عقب ارائه شده است. شما نمی توانید از هر دو در یک فراخوانی تابع استفاده کنید. وعده با همان نوعی که به callback ارسال می شود حل می شود.

رویدادها

onStatusChanged

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

زمانی که وضعیت ضبط یک برگه تغییر می‌کند، رویداد فعال می‌شود. این به نویسندگان برنامه افزودنی اجازه می دهد تا وضعیت ضبط برگه ها را پیگیری کنند تا عناصر رابط کاربری مانند اقدامات صفحه را همگام کنند.

پارامترها

  • پاسخ به تماس

    تابع

    پارامتر callback به نظر می رسد:

    (info: CaptureInfo) => void