الوصف
استخدِم واجهة برمجة التطبيقات chrome.tabCapture للتفاعل مع مصادر وسائط علامات التبويب.
الأذونات
tabCaptureالمفاهيم والاستخدام
تتيح لك واجهة برمجة التطبيقات browser.tabCapture الوصول إلى MediaStream يحتوي على فيديو
وصوت لعلامة التبويب الحالية. ولا يمكن استدعاؤها إلا بعد أن يستدعي المستخدم إضافة، مثل النقر على زر الإجراء الخاص بالإضافة. ويشبه هذا سلوك الإذن "activeTab".
الاحتفاظ بصوت النظام
عند الحصول على MediaStream لعلامة تبويب، لن يتم تشغيل الصوت في علامة التبويب هذه
للمستخدم. يشبه هذا سلوك الدالة getDisplayMedia() عندما يتم ضبط العلامة suppressLocalAudioPlayback على "صحيح".
لمواصلة تشغيل الصوت للمستخدم، استخدِم ما يلي:
const output = new AudioContext();
const source = output.createMediaStreamSource(stream);
source.connect(output.destination);
يؤدي هذا الإجراء إلى إنشاء AudioContext جديد وربط صوت MediaStream في علامة التبويب بالوجهة
التلقائية.
أرقام تعريف مصادر البيانات
سيؤدي استدعاء browser.tabCapture.getMediaStreamId() إلى عرض معرّف البث. للوصول لاحقًا إلى MediaStream من المعرّف، استخدِم ما يلي:
navigator.mediaDevices.getUserMedia({
audio: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
video: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
});
قيود الاستخدام
بعد استدعاء getMediaStreamId()، هناك قيود على الأماكن التي يمكن فيها استخدام معرّف مصدر البيانات الذي تم عرضه:
- If
consumerTabIdis specified, the ID can be used by agetUserMedia()call in any frame in the given tab which has the same security origin. - في حال عدم تحديد ذلك، يمكن استخدام رقم التعريف في أي إطار له مصدر الأمان نفسه في عملية العارض نفسها التي يستخدمها المتصل، وذلك اعتبارًا من الإصدار 116 من Chrome. وهذا يعني أنّه يمكن استخدام معرّف البث الذي تم الحصول عليه في مشغّل الخدمات في مستند خارج الشاشة.
قبل الإصدار Chrome 116، عندما لم يتم تحديد consumerTabId، كان معرّف البث يقتصر على كل من مصدر الأمان وعملية العرض وإطار العرض للمتصل.
مزيد من المعلومات
لمزيد من المعلومات حول كيفية استخدام واجهة برمجة التطبيقات browser.tabCapture، يُرجى الاطّلاع على
تسجيل الصوت والتقاط الشاشة. يوضّح هذا كيفية استخدام tabCapture وواجهات برمجة التطبيقات ذات الصلة لحلّ عدد من حالات الاستخدام الشائعة.
الأنواع
CaptureInfo
الخصائص
-
ملء الشاشة
قيمة منطقية
ما إذا كان أحد العناصر في علامة التبويب التي يتم تسجيلها في وضع ملء الشاشة
-
status
حالة التسجيل الجديدة لعلامة التبويب
-
tabId
الرقم
رقم تعريف علامة التبويب التي تغيّرت حالتها
CaptureOptions
الخصائص
-
ملف صوتي
قيمة منطقية اختيارية
-
audioConstraints
MediaStreamConstraint اختياري
-
فيديو
قيمة منطقية اختيارية
-
videoConstraints
MediaStreamConstraint اختياري
GetMediaStreamOptions
الخصائص
-
consumerTabId
number اختيارية
رقم تعريف علامة التبويب الاختياري لعلامة التبويب التي ستستدعي لاحقًا
getUserMedia()لاستخدام البث وفي حال عدم تحديدها، لا يمكن استخدام البث الناتج إلا من خلال الإضافة التي تطلبه. لا يمكن استخدام البث إلا من خلال الإطارات في علامة التبويب المحدّدة التي يتطابق مصدر الأمان فيها مع مصدر علامة التبويب المستهلكة. يجب أن يكون مصدر علامة التبويب آمنًا، مثل HTTPS. -
targetTabId
number اختيارية
معرّف علامة التبويب الاختياري لعلامة التبويب التي سيتم تسجيلها وإذا لم يتم تحديدها، سيتم اختيار علامة التبويب النشطة حاليًا. يمكن استخدام علامات التبويب المستهدَفة فقط التي تم منح الإضافة إذن
activeTabلها.
MediaStreamConstraint
الخصائص
-
إلزامي
عنصر
-
اختياري
object اختياري
TabCaptureState
Enum
"pending"
"active"
"stopped"
"error"
الطُرق
capture()
browser.tabCapture.capture(
options: CaptureOptions,
callback: function,
): void
لالتقاط المنطقة المرئية من علامة التبويب النشطة حاليًا لا يمكن بدء التسجيل إلا في علامة التبويب النشطة حاليًا بعد استدعاء الإضافة، على غرار طريقة عمل activeTab. يتم الاحتفاظ بالتسجيل في جميع عمليات التنقل في الصفحة داخل علامة التبويب، ويتوقف عند إغلاق علامة التبويب أو إغلاق الإضافة لبث الوسائط.
المعلمات
-
الخيارات
لضبط مصدر الوسائط الذي يتم عرضه
-
callback
دالة
تظهر المَعلمة
callbackعلى النحو التالي:(stream: LocalMediaStream) => void
-
البث
LocalMediaStream
-
getCapturedTabs()
browser.tabCapture.getCapturedTabs(): Promise<CaptureInfo[]>
تعرض هذه الطريقة قائمة بعلامات التبويب التي طلبت التسجيل أو التي يتم تسجيلها، أي status != stopped وstatus != error. يسمح ذلك للإضافات بإعلام المستخدم بوجود عملية تسجيل حالية لعلامة تبويب تمنع نجاح عملية تسجيل جديدة لعلامة تبويب (أو لمنع الطلبات المتكررة لعلامة التبويب نفسها).
المرتجعات
-
Promise<CaptureInfo[]>
الإصدار 116 من Chrome والإصدارات الأحدث browser.* منذ الإصدار 148 من Chromeتعرض هذه الطريقة Promise يتم حله باستخدام CaptureInfo[] لعلامات التبويب التي تم تسجيلها.
getMediaStreamId()
browser.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
): Promise<string>
تنشئ هذه الطريقة معرّف بث لتسجيل علامة التبويب المستهدَفة. تشبه طريقة chrome.tabCapture.capture()، ولكنّها تعرض معرّف بث الوسائط بدلاً من بث الوسائط في علامة تبويب المستهلك.
المعلمات
-
الخيارات
GetMediaStreamOptions اختياري
المرتجعات
-
وعد<سلسلة>
الإصدار 116 من Chrome والإصدارات الأحدث browser.* منذ الإصدار 148 من Chromeتعرض هذه الطريقة كائن Promise يتم حله بالنتيجة. في حال نجاح العملية، تكون النتيجة سلسلة مبهمة يمكن تمريرها إلى واجهة برمجة التطبيقات
getUserMedia()لإنشاء بث وسائط يتوافق مع علامة التبويب المستهدَفة. يمكن استخدامstreamIdالذي تم إنشاؤه مرة واحدة فقط، وتنتهي صلاحيته بعد بضع ثوانٍ إذا لم يتم استخدامه.
الفعاليات
onStatusChanged
browser.tabCapture.onStatusChanged.addListener(
callback: function,
)
يتم تشغيل الحدث عند تغيير حالة التسجيل لعلامة تبويب. يتيح ذلك لمؤلفي الإضافات تتبُّع حالة التقاط علامات التبويب لمزامنة عناصر في واجهة المستخدم، مثل إجراءات الصفحة.
المعلمات
-
callback
دالة
تظهر المَعلمة
callbackعلى النحو التالي:(info: CaptureInfo) => void
-
معلومات
-