Medienaufnahme und -einschränkungen

Im Medienteil von WebRTC geht es um den Zugriff auf Hardware, die Aufnahmen aufnehmen kann. wie Kameras und Mikrofone, sowie das Streamen von Medien arbeiten. Es werden auch Displaymedien behandelt, die Erfassung von Daten.

Mediengeräte

Es erfolgt Zugriff auf alle vom Browser unterstützten Kameras und Mikrofone. über das navigator.mediaDevices-Objekt verwaltet. Anwendungen können Daten abrufen die aktuelle Liste der verbundenen Geräte abrufen und auch auf Änderungen warten, Kameras und Microhpones werden über USB verbunden und können während des Lebenszyklus der Anwendung getrennt werden. Da der Zustand eines Mediums Gerät sich jederzeit ändern kann, wird empfohlen, Anwendungen für um die Änderungen richtig verarbeiten zu können.

Einschränkungen

Beim Zugriff auf Mediengeräte empfiehlt es sich, möglichst detaillierte Einschränkungen wie möglich. Es ist zwar möglich, die Standardkamera zu öffnen mit einer einfachen Einschränkung des Mikrofons einen Medienstream die optimale Lösung für die Anwendung zu finden.

Die spezifischen Einschränkungen werden in einem MediaTrackConstraint-Objekt definiert, eine für Audio und ein Video für Video. Die Attribute in diesem Objekt sind vom Typ ConstraintLong, ConstraintBoolean, ConstraintDouble oder ConstraintDOMString. Dies kann entweder ein bestimmter Wert (z.B. eine Zahl, boolescher Wert oder String), ein Bereich (LongRange oder DoubleRange mit einem Mindestwert und Maximalwert) oder ein Objekt mit der Definition ideal oder exact. Für eine -Wert angeben, versucht der Browser, einen möglichst ähnlichen Wert zu wählen. Für einen Bereich wird der beste Wert in diesem Bereich verwendet. Wenn exact gleich werden nur Medienstreams, die genau mit dieser Einschränkung übereinstimmen, zurückgegeben.

Nah

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

Bereich

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

Genau passend

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

Um die Konfiguration eines bestimmten Tracks eines Mediastreams zu ermitteln, können wir MediaStreamTrack.getSettings() aufrufen, wodurch die MediaTrackSettings wird aktuell angewendet.

Es ist auch möglich, die Einschränkungen eines Titels über ein Mediengerät zu aktualisieren, geöffnet wurden, indem applyConstraints() für den Track aufgerufen wurde. Dadurch kann ein ein Mediengerät neu zu konfigurieren, ohne vorher den bestehenden Stream.

Displaymedien

Eine Anwendung, die Bildschirmaufnahmen und -aufzeichnungen ausführen möchte die Display Media API verwenden. Die Funktion getDisplayMedia() (die Teil von navigator.mediaDevices ähnelt getUserMedia() und wird verwendet für: um den Inhalt des Bildschirms (oder einen Teil davon, z. B. eine . Der zurückgegebene MediaStream funktioniert genauso wie bei Verwendung von getUserMedia().

Die Einschränkungen für getDisplayMedia() unterscheiden sich von denen für reguläre Video- oder Audioeingabe.

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

Der obige Code-Snipet zeigt, wie die speziellen Einschränkungen für die Bildschirmaufzeichnung funktioniert. Beachten Sie, dass diese Funktionen möglicherweise nicht von allen Browsern unterstützt werden, in denen Medien-Support.

Streams und Titel

Ein MediaStream steht für einen Stream von Medieninhalten, der aus Titeln besteht. (MediaStreamTrack) aus Audio und Video. Du kannst alle Tracks aus abrufen, MediaStream durch Aufrufen von MediaStream.getTracks(), wodurch ein Array von MediaStreamTrack-Objekte.

MediaStreamTrack

Ein MediaStreamTrack hat ein kind-Attribut, das entweder audio oder video ist. gibt an, welche Art von Medien es repräsentiert. Jede Spur kann durch Umschalten Die zugehörige enabled-Eigenschaft. Ein Titel hat die boolesche Eigenschaft remote, die angibt, wenn sie von einem RTCPeerConnection und von einem Remote-Peer stammt.