توضیحات
از 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
خواص
- 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
- نتیجه
CaptureInfo []
برمی گرداند
Promise< CaptureInfo []>
Chrome 116+Promises در Manifest V3 و نسخه های جدیدتر پشتیبانی می شود، اما callbacks برای سازگاری به عقب ارائه شده است. شما نمی توانید از هر دو در یک فراخوانی تابع استفاده کنید. وعده با همان نوعی که به callback ارسال می شود حل می شود.
getMediaStreamId()
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
- اطلاعات