توضیحات
از API chrome.tabCapture برای تعامل با جریانهای رسانهای تب استفاده کنید.
مجوزها
tabCapture مفاهیم و کاربردها
API مربوط به chrome.tabCapture به شما امکان دسترسی به یک MediaStream حاوی ویدیو و صدای تب فعلی را میدهد. این API فقط پس از اینکه کاربر یک افزونه را فراخوانی کند، مثلاً با کلیک روی دکمهی عملیات افزونه، قابل فراخوانی است. این عملکرد مشابه عملکرد مجوز "activeTab" است.
حفظ صدای سیستم
وقتی یک MediaStream برای یک تب دریافت میشود، صدای آن تب دیگر برای کاربر پخش نمیشود. این مشابه رفتار تابع getDisplayMedia() است، زمانی که پرچم suppressLocalAudioPlayback روی true تنظیم شده باشد.
برای ادامه پخش صدا برای کاربر، از موارد زیر استفاده کنید:
const output = new AudioContext();
const source = output.createMediaStreamSource(stream);
source.connect(output.destination);
این یک AudioContext جدید ایجاد میکند و صدای MediaStream تب را به مقصد پیشفرض متصل میکند.
شناسههای جریان
فراخوانی chrome.tabCapture.getMediaStreamId() یک شناسه جریان (stream ID) را برمیگرداند. برای دسترسی بعدی به MediaStream از طریق شناسه، از کد زیر استفاده کنید:
navigator.mediaDevices.getUserMedia({
audio: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
video: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
});
محدودیتهای استفاده
پس از فراخوانی getMediaStreamId() ، محدودیتهایی در مورد محل استفاده از شناسه جریان برگشتی وجود دارد:
- اگر
consumerTabIdمشخص شده باشد، شناسه میتواند توسط فراخوانیgetUserMedia()در هر فریمی در تب داده شده که منشأ امنیتی یکسانی دارد، استفاده شود. - وقتی این مورد مشخص نشده باشد، از کروم ۱۱۶ به بعد، شناسه میتواند در هر فریمی با همان مبدأ امنیتی در همان فرآیند رندر به عنوان فراخوانیکننده استفاده شود. این بدان معناست که شناسه جریانی که در یک سرویس ورکر به دست میآید، میتواند در یک سند خارج از صفحه استفاده شود.
قبل از کروم ۱۱۶، وقتی consumerTabId مشخص نشده بود، شناسه جریان به مبدا امنیتی، فرآیند رندر و فریم رندر فراخواننده محدود میشد.
بیشتر بدانید
برای کسب اطلاعات بیشتر در مورد نحوه استفاده از API chrome.tabCapture ، به بخش ضبط صدا و ضبط صفحه مراجعه کنید. این بخش نحوه استفاده از tabCapture و APIهای مرتبط را برای حل تعدادی از موارد استفاده رایج نشان میدهد.
انواع
CaptureInfo
خواص
- تمام صفحه
بولی
اینکه آیا عنصری در برگهای که در حال ضبط شدن است، در حالت تمام صفحه قرار دارد یا خیر.
- وضعیت
وضعیت جدید ضبط تب.
- شناسه برگه
شماره
شناسهی برگهای که وضعیت آن تغییر کرده است.
CaptureOptions
خواص
- صوتی
بولی اختیاری
- محدودیتهای صوتی
محدودیت MediaStream اختیاری است
- ویدئو
بولی اختیاری
- محدودیتهای ویدیو
محدودیت MediaStream اختیاری است
GetMediaStreamOptions
خواص
- تبآیدی مصرفکننده
شماره اختیاری
شناسه اختیاری تب مربوط به تبی که بعداً تابع
getUserMedia()را برای مصرف استریم فراخوانی میکند. در صورت عدم تعیین این شناسه، استریم حاصل فقط توسط افزونه فراخوانیکننده قابل استفاده است. استریم فقط میتواند توسط فریمهایی در تب داده شده که مبدا امنیتی آنها با مبدا تب مصرفکننده مطابقت دارد، استفاده شود. مبدا تب باید یک مبدا امن، مثلاً HTTPS، باشد. - شناسه هدف
شماره اختیاری
شناسهی اختیاری تبی که قرار است ضبط شود. اگر مشخص نشود، تب فعال فعلی انتخاب خواهد شد. فقط تبهایی که افزونه برای آنها مجوز
activeTabرا صادر کرده است، میتوانند به عنوان تب هدف استفاده شوند.
MediaStreamConstraint
خواص
- اجباری
شیء
- اختیاری
شیء اختیاری
TabCaptureState
شمارشی
«در انتظار» "فعال" "متوقف شد" "خطا"
روشها
capture()
chrome.tabCapture.capture(
options: CaptureOptions,
callback: function,
): void
ناحیه قابل مشاهده تب فعال فعلی را ضبط میکند. ضبط فقط میتواند پس از فراخوانی افزونه، از تب فعال فعلی شروع شود، مشابه روشی که activeTab کار میکند. ضبط در سراسر پیمایش صفحات درون تب حفظ میشود و با بسته شدن تب یا بسته شدن جریان رسانه توسط افزونه متوقف میشود.
پارامترها
- گزینهها
جریان رسانهای برگشتی را پیکربندی میکند.
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:(stream: LocalMediaStream) => void
- جریان
پخش محلی مدیا
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(): Promise<CaptureInfo[]>
لیستی از تبهایی که درخواست ضبط داشتهاند یا در حال ضبط هستند را برمیگرداند، یعنی status != stopped و status != error. این به افزونهها اجازه میدهد تا به کاربر اطلاع دهند که یک ضبط تب موجود وجود دارد که از ضبط موفقیتآمیز تب جدید جلوگیری میکند (یا از درخواستهای اضافی برای همان تب جلوگیری میکند).
بازگشتها
قول< CaptureInfo []>
کروم ۱۱۶+یک Promise برمیگرداند که با CaptureInfo[] برای تبهای گرفتهشده، اجرا میشود.
getMediaStreamId()
chrome.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
): Promise<string>
یک شناسه جریان برای ضبط تب هدف ایجاد میکند. مشابه متد chrome.tabCapture.capture() است، اما به جای یک جریان رسانه، یک شناسه جریان رسانه را به تب مصرفکننده برمیگرداند.
پارامترها
- گزینهها
GetMediaStreamOptions اختیاری است
بازگشتها
قول<string>
کروم ۱۱۶+یک Promise برمیگرداند که با نتیجه حل میشود. در صورت موفقیت، نتیجه یک رشتهی مبهم است که میتواند به API مربوط به
getUserMedia()ارسال شود تا یک جریان رسانهای تولید کند که مربوط به تب هدف باشد.streamIdایجاد شده فقط یک بار قابل استفاده است و در صورت عدم استفاده پس از چند ثانیه منقضی میشود.
رویدادها
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
این رویداد زمانی فعال میشود که وضعیت ضبط یک تب تغییر کند. این به نویسندگان افزونه اجازه میدهد تا وضعیت ضبط تبها را پیگیری کنند تا عناصر رابط کاربری مانند اقدامات صفحه را همگام نگه دارند.
پارامترها
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:(info: CaptureInfo) => void
- اطلاعات