मीडिया कैप्चर और कंस्ट्रेंट

WebRTC के मीडिया वाले हिस्से में, कैप्चर करने वाले हार्डवेयर को ऐक्सेस करने का तरीका बताया गया है वीडियो और ऑडियो, जैसे कि कैमरा और माइक्रोफ़ोन. साथ ही, मीडिया स्ट्रीम कैसे किया जाता है काम. इसमें डिसप्ले मीडिया भी शामिल है. किसी ऐप्लिकेशन की मदद से ही स्क्रीन कैप्चर करने.

मीडिया डिवाइस

ब्राउज़र पर काम करने वाले सभी कैमरों और माइक्रोफ़ोन को ऐक्सेस किया जाता है और इसे navigator.mediaDevices ऑब्जेक्ट से मैनेज किया जाता है. ऐप्लिकेशन Google Play पर कनेक्ट किए गए डिवाइसों की मौजूदा सूची देख सकती है और बदलावों को सुन भी सकती है. ऐसा इसलिए, क्योंकि कैमरे और माइक्रोहोपों को यूएसबी के ज़रिए कनेक्ट किया जाता है और इन्हें कनेक्ट किया जा सकता है और ऐप्लिकेशन के लाइफ़साइकल के दौरान डिसकनेक्ट हो जाता है. जब से मीडिया की डिवाइस किसी भी समय बदल सकता है, यह अनुशंसा की जाती है कि डिवाइस में बदलाव किया जाता है, ताकि बदलावों को सही तरीके से मैनेज किया जा सके.

कंस्ट्रेंट

मीडिया डिवाइसों को ऐक्सेस करते समय, ज़्यादा से ज़्यादा जानकारी देना एक अच्छा तरीका है जितना हो सके उतना आसान बनाएँ. डिफ़ॉल्ट कैमरा खोला जा सकता है और एक आसान रुकावट के साथ माइक्रोफ़ोन, यह एक ऐसी मीडिया स्ट्रीम डिलीवर कर सकता है जो बहुत दूर है सबसे सही स्टेज में हैं.

खास कंस्ट्रेंट को 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 API का इस्तेमाल करना होगा. फ़ंक्शन getDisplayMedia() (जो इसका हिस्सा है का navigator.mediaDevices, getUserMedia() के समान है और इसका इस्तेमाल डिसप्ले के कॉन्टेंट या उसके किसी हिस्से को खोलने के लिए, जैसे कि विंडो). वापस किया गया MediaStream उसी तरह काम करता है जैसा इस्तेमाल करते समय करता है getUserMedia().

getDisplayMedia() की सीमाएं, सामान्य वैल्यू से अलग होती हैं वीडियो या ऑडियो इनपुट.

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

ऊपर दिया गया कोड स्निपेट दिखाता है कि स्क्रीन रिकॉर्डिंग के खास कंस्ट्रेंट कैसे काम करता है. ध्यान दें कि ऐसा हो सकता है कि ये विकल्प उन सभी ब्राउज़र पर काम न करें जिनमें डिसप्ले होता है मीडिया समर्थन.

स्ट्रीम और ट्रैक

MediaStream, मीडिया कॉन्टेंट की एक स्ट्रीम दिखाता है. इसमें ट्रैक शामिल होते हैं ऑडियो और वीडियो का (MediaStreamTrack) हिस्सा. आप यहां से सभी ट्रैक वापस पा सकते हैं MediaStream.getTracks() को कॉल करके MediaStream, जो इसकी श्रेणी दिखाता है MediaStreamTrack ऑब्जेक्ट.

MediaStreamTrack

MediaStreamTrack में kind प्रॉपर्टी होती है, जो audio या video होती है, बताता है कि वह किस तरह का मीडिया है. टॉगल करके हर ट्रैक को म्यूट किया जा सकता है इसकी enabled प्रॉपर्टी. किसी ट्रैक में एक बूलियन प्रॉपर्टी remote है, जो यह बताती है अगर इसे RTCPeerConnection से लिया गया है और यह किसी रिमोट साथी से आया है.