Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

التقاط وسائل الإعلام والقيود

يغطي جزء الوسائط في WebRTC كيفية الوصول إلى الأجهزة القادرة على التقاط الفيديو والصوت ، مثل الكاميرات والميكروفونات ، وكذلك كيفية عمل دفق الوسائط. ويغطي أيضًا وسائط العرض ، وهي الطريقة التي يمكن للتطبيق من خلالها التقاط الشاشة.

وسائل الإعلام

يتم الوصول إلى جميع الكاميرات والميكروفونات التي يدعمها المتصفح وإدارتها من خلال كائن navigator.mediaDevices . يمكن للتطبيقات استرداد القائمة الحالية للأجهزة المتصلة والاستماع أيضًا إلى التغييرات ، حيث تتصل العديد من الكاميرات والميكروفونات من خلال USB ويمكن توصيلها وفصلها أثناء دورة حياة التطبيق. نظرًا لأن حالة جهاز الوسائط يمكن أن تتغير في أي وقت ، فمن المستحسن أن تسجل التطبيقات لتغييرات الجهاز من أجل معالجة التغييرات بشكل صحيح.

القيود

عند الوصول إلى أجهزة الوسائط ، من الممارسات الجيدة توفير قيود مفصلة قدر الإمكان. في حين أنه من الممكن فتح الكاميرا والميكروفون الافتراضيين بقيد بسيط ، إلا أنه قد يوفر دفق وسائط بعيد عن الأكثر مثالية للتطبيق.

يتم تعريف القيود المحددة في كائن MediaTrackConstraint ، واحد للصوت وآخر للفيديو. السمات في هذا الكائن من نوع ConstraintLong ، ConstraintBoolean ، ConstraintDouble أو ConstraintDOMString . يمكن أن تكون هذه إما قيمة محددة (على سبيل المثال ، رقم ، منطقي أو سلسلة) ، أو نطاق ( LongRange أو DoubleRange بحد أدنى وقيمة قصوى) أو كائن ذو تعريف ideal أو exact . لقيمة معينة ، سيحاول المتصفح اختيار شيء ما قدر الإمكان. بالنسبة للنطاق ، سيتم استخدام أفضل قيمة في هذا النطاق. عند exact ، سيتم إرجاع تدفقات الوسائط التي تتطابق تمامًا مع هذا القيد.

قريب

 // Camera with a resolution as close to 640x480 as possible
{
    "video": {
        "width": 640,
        "height": 480
    }
}
 

نطاق

 // Camera with a resolution in the range 640x480 to 1024x768
{
    "video": {
        "width": {
            "min": 640,
            "max": 1024
        },
        "height": {
            "min": 480,
            "max": 768
        }
    }
}
 

بالضبط

 // Camera with the exact resolution of 1024x768
{
    "video": {
        "width": {
            "exact": 1024
        },
        "height": {
            "exact": 768
        }
    }
}
 

لتحديد التكوين الفعلي الذي يحتوي عليه مسار معين لدفق الوسائط ، يمكننا استدعاء MediaStreamTrack.getSettings() الذي يعرض MediaTrackSettings المطبق حاليًا.

من الممكن أيضًا تحديث قيود المسار من جهاز وسائط قمنا بفتحه ، عن طريق استدعاء applyConstraints() على المسار. يتيح ذلك للتطبيق إعادة تكوين جهاز وسائط دون الحاجة أولاً إلى إغلاق الدفق الحالي.

عرض الوسائط

يجب أن يستخدم التطبيق الذي يريد أن يكون قادرًا على التقاط الشاشة والتسجيل واجهة برمجة تطبيقات Display Media. وظيفة getDisplayMedia() (والذي هو جزء من navigator.mediaDevices مشابهة ل getUserMedia() ويستخدم لغرض فتح محتوى الشاشة (أو جزء منه، مثل نافذة). وعاد MediaStream يعمل نفس عند استخدام getUserMedia() .

تختلف قيود getDisplayMedia() عن تلك المستخدمة لإدخال الفيديو أو الصوت العادي.

 {
    video: {
        cursor: 'always' | 'motion' | 'never',
        displaySurface: 'application' | 'browser' | 'monitor' | 'window'
    }
}
 

يوضح مقتطف الشفرة أعلاه كيفية عمل القيود الخاصة لتسجيل الشاشة. لاحظ أن هذه المتصفحات قد لا تكون مدعومة من قبل جميع المتصفحات التي تدعم عرض الوسائط.

تيارات ومسارات

يمثل MediaStream دفقًا من محتوى الوسائط ، والذي يتكون من مسارات ( MediaStreamTrack ) للصوت والفيديو. يمكنك استرداد كل المسارات من MediaStream عن طريق استدعاء MediaStream.getTracks() ، والتي تقوم بإرجاع صفيف من كائنات MediaStreamTrack .

MediaStreamTrack

MediaStreamTrack لها خاصية kind إما audio أو video ، تشير إلى نوع الوسائط التي تمثلها. يمكن كتم صوت كل مسار عن طريق تبديل الخاصية enabled . يحتوي المسار على remote منطقي يشير إلى ما إذا كان مصدره هو اتصال RTCPeerConnection ويأتي من نظير بعيد.