Freigeben über


Schnellstart: Festlegen von Videoeinschränkungen in Ihrer Anruf-App

Wichtig

Die in diesem Artikel beschriebenen Funktionen befinden sich derzeit in der öffentlichen Vorschauphase. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Überblick

Mit der API für Videoeinschränkungen können Entwickler*innen die Videoqualität innerhalb ihrer Videoaufrufe steuern. In diesem Schnellstartleitfaden wird veranschaulicht, wie Sie die API zum Festlegen der Einschränkungen verwenden.

Voraussetzungen

Informationen zum Einrichten einer Beispiel-App mit Sprachanrufen finden Sie unter dem Schnellstart: Sprachanruf.

Klassen

name Beschreibung
VideoConstraints Wird verwendet, um sowohl für eingehende als auch für ausgehende Videodaten Einschränkungen festzulegen.
OutgoingVideoConstraints Dient zur Angabe von Einschränkungen (MaxWidth | MaxHeight | MaxFrameRate) für ausgehende Videostreams.
IncomingVideoConstraints Dient zur Angabe von Einschränkungen (MaxWidth | MaxHeight) für eingehende Videostreams.

Verwenden von Videoeinschränkungen

In den folgenden Abschnitten wird erläutert, wie die Videoeinschränkungen für eingehende und/oder ausgehende Videostreams zu verschiedenen Zeiten eines Anrufs festgelegt werden können.

Festlegen von Videoeinschränkungen vor Beginn eines Anrufs

Für eingehende Videostreams muss den IncomingVideoOptions ein IncomingVideoConstraints-Element hinzugefügt werden.

    var IncomingVideoOptions = new IncomingVideoOptions()
    {
        Constraints = new IncomingVideoConstraints() 
        { 
            MaxWidth = /*value*/, 
            MaxHeight = /*value*/ 
        },
        // other options
        // ...
    }

Für ausgehende Videostreams muss den OutgoingVideoOptions ein OutgoingVideoConstraints-Element hinzugefügt werden.

    var OutgoingVideoOptions = new OutgoingVideoOptions()
    {
        Constraints = new OutgoingVideoConstraints() 
        { 
            MaxWidth = /*value*/, 
            MaxHeight = /*value*/, 
            MaxFrameRate = /*value*/ 
        },
        // other options
        // ...
    }

Da die Optionen verwendet werden, um einen Aufruf zu starten bzw. einem Anruf beizutreten, können die Einschränkungen dann automatisch auf die Streams angewendet werden. Beispiel:

    var joinCallOptions = new JoinCallOptions()
    {
        IncomingVideoOptions = new IncomingVideoOptions()
        {
            Constraints = new IncomingVideoConstraints() 
            { 
                MaxWidth = /*value*/, 
                MaxHeight = /*value*/ 
            },
            // other options
            // ...
        },

        OutgoingVideoOptions = new OutgoingVideoOptions()
        {
            Constraints = new OutgoingVideoConstraints() 
            { 
                MaxWidth = /*value*/, 
                MaxHeight = /*value*/, 
                MaxFrameRate = /*value*/ 
            },
            // other options
            // ...
        }
    };
    await callAgent.JoinAsync(locator, joinCallOptions);

Festlegen von Videoeinschränkungen während eines Anrufs

Anstatt die Videoeinschränkungen vor Beginn eines Anrufs festzulegen, können Sie die Videoeinschränkungen auch während eines Anrufs dynamisch anpassen. Sie müssen SetVideoConstraints für Ihre Call-Typklasse aufrufen und die Einschränkungen angeben.


    OutgoingVideoConstraints outgoingVideoConstraints = new OutgoingVideoConstraints()
    {
        outgoingVideoConstraints.MaxWidth = /*value*/ ;
        outgoingVideoConstraints.MaxHeight = /*value*/ ;
        outgoingVideoConstraints.MaxFrameRate = /*value*/ ;
    };
    
    IncomingVideoConstraints incomingVideoConstraints = new IncomingVideoConstraints()
    {
        incomingVideoConstraints.MaxWidth = /*value*/ ;
        incomingVideoConstraints.MaxHeight = /*value*/ ;
    };
  
    VideoConstraints constraints = new VideoConstraints();
    constraints.OutgoingVideoConstraints = outgoingVideoConstraints;
    constraints.IncomingVideoConstraints = incomingVideoConstraints;
    
    call.SetVideoConstraints(constraints);

Um die zuvor festgelegten Videoeinschränkungen zurückzusetzen/zu entfernen, müssen Sie nach dem obigen Muster vorgehen und 0 als Einschränkungswert angeben. Die Angabe von null-Werten für IncomingVideoConstraints oder OutgoingVideoConstraints führt nicht zum Zurücksetzen/Entfernen der Einschränkungen und die Einschränkungen mit einem null-Wert werden ignoriert.

Begrenzungen

Hinweis

Sie sollten sich dieser Beschränkungen bewusst sein, wenn Sie die API für Videoeinschränkungen verwenden. Einige der genannten Beschränkungen werden in zukünftigen Releases aufgehoben.

Es gelten einige bekannte Beschränkungen für die aktuelle Version der API für Videoeinschränkungen.

  • Die Einschränkung ist eine max-Beschränkung, d. h. der mögliche Wert kann dem angegebenen Wert entsprechen oder diesen unterschreiten. Es gibt keine Garantie dafür, dass der tatsächliche Wert mit den Angaben der Benutzer*innen übereinstimmt.

  • Wenn die Benutzer*innen einen zu kleinen Wert für die Einschränkung festlegen, verwendet das SDK den kleinsten verfügbaren Wert, der unterstützt wird.

  • Bei der Festlegung von OutgoingVideoConstraints während eines Anrufs übernimmt der aktuell geöffnete Videostream nicht automatisch die angegebenen Einschränkungen. Damit die Einschränkungen wirksam werden, müssen Sie den ausgehenden Videostream anhalten und neu starten.

  • Bei IncomingVideoConstraints handelt es sich derzeit um eine Benutzerpräferenz und nicht um eine harte Einschränkung, d. h. je nach Netzwerk und Hardware kann der tatsächlich empfangene Wert die festgelegte Einschränkung weiterhin überschreiten.

Medienstatistiken

Um die Videoqualität nach Anwendung der Videoeinschränkungen zu bewerten und zu vergleichen, können Sie auf die MediaStats-API zugreifen, um Informationen zur Videoauflösung und Bitrate des Streams abzurufen. Die Medienstatistiken enthalten darüber hinaus weitere detaillierte Statistiken zu den Streams, z. B. Jitter, Paketverlust, Roundtripzeit usw.

Wichtig

Die in diesem Artikel beschriebenen Funktionen befinden sich derzeit in der öffentlichen Vorschauphase. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Überblick

Mit der API für Videoeinschränkungen können Entwickler*innen die Videoqualität innerhalb ihrer Videoaufrufe steuern. In diesem Schnellstartleitfaden wird veranschaulicht, wie Sie die API zum Festlegen der Einschränkungen verwenden.

Voraussetzungen

Informationen zum Einrichten einer Beispiel-App mit Sprachanrufen finden Sie unter dem Schnellstart: Sprachanruf.

Klassen

name Beschreibung
VideoConstraints Wird verwendet, um sowohl für eingehende als auch für ausgehende Videodaten Einschränkungen festzulegen.
OutgoingVideoConstraints Dient zur Angabe von Einschränkungen (maxWidth | maxHeight | maxFrameRate) für ausgehende Videostreams.
IncomingVideoConstraints Dient zur Angabe von Einschränkungen (maxWidth | maxHeight) für eingehende Videostreams.

Verwenden von Videoeinschränkungen

In den folgenden Abschnitten wird erläutert, wie die Videoeinschränkungen für eingehende und/oder ausgehende Videostreams zu verschiedenen Zeiten eines Anrufs festgelegt werden können.

Festlegen von Videoeinschränkungen vor Beginn eines Anrufs

Für eingehende Videostreams muss den IncomingVideoOptions ein IncomingVideoConstraints-Element hinzugefügt werden.

    IncomingVideoConstraints incomingVideoConstraints = new IncomingVideoConstraints();
    incomingVideoConstraints.setMaxWidth(/*value*/);
    incomingVideoConstraints.setMaxHeight(/*value*/);

    // ...

    IncomingVideoOptions incomingVideoOptions = new IncomingVideoOptions();
    incomingVideoOptions.setConstraints(incomingVideoConstraints);

Für ausgehende Videostreams muss den OutgoingVideoOptions ein OutgoingVideoConstraints-Element hinzugefügt werden.

    OutgoingVideoConstraints outgoingVideoConstraints = new OutgoingVideoConstraints() 
    outgoingVideoConstraints.setMaxWidth(/*value*/); 
    outgoingVideoConstraints.setMaxHeight(/*value*/); 
    outgoingVideoConstraints.setMaxFrameRate(/*value*/); 
   
    // ...
    
    OutgoingVideoOptions outgoingVideoOptions = new OutgoingVideoOptions();
    outgoingVideoOptions.setConstraints(outgoingVideoConstraints);

Da die Optionen verwendet werden, um einen Aufruf zu starten bzw. einem Anruf beizutreten, können die Einschränkungen dann automatisch auf die Streams angewendet werden. Beispiel:

    JoinCallOptions joinCallOptions = new JoinCallOptions();
    joinCallOptions.setIncomingVideoOptions(incomingVideoOptions);
    joinCallOptions.setOutgoingVideoOptions(outgoingVideoOptions);
    callAgent.Join(context, locator, joinCallOptions);

Festlegen von Videoeinschränkungen während eines Anrufs

Anstatt die Videoeinschränkungen vor Beginn eines Anrufs festzulegen, können Sie die Videoeinschränkungen auch während eines Anrufs dynamisch anpassen. Sie müssen setVideoConstraints für Ihre Call-Typklasse aufrufen und die Einschränkungen angeben.


    OutgoingVideoConstraints outgoingVideoConstraints = new OutgoingVideoConstraints();
    outgoingVideoConstraints.setMaxWidth(/*value*/); 
    outgoingVideoConstraints.setMaxHeight(/*value*/); 
    outgoingVideoConstraints.setMaxFrameRate(/*value*/); 
    
    IncomingVideoConstraints incomingVideoConstraints = new IncomingVideoConstraints();
    incomingVideoConstraints.setMaxWidth(/*value*/);
    incomingVideoConstraints.setMaxHeight(/*value*/);
  
    VideoConstraints constraints = new VideoConstraints();
    constraints.setOutgoingVideoConstraints(outgoingVideoConstraints);
    constraints.setIncomingVideoConstraints(incomingVideoConstraints);
    
    call.setVideoConstraints(constraints);

Um die zuvor festgelegten Videoeinschränkungen zurückzusetzen/zu entfernen, müssen Sie nach dem obigen Muster vorgehen und 0 als Einschränkungswert angeben. Die Angabe von null-Werten für IncomingVideoConstraints oder OutgoingVideoConstraints führt nicht zum Zurücksetzen/Entfernen der Einschränkungen und die Einschränkungen mit einem null-Wert werden ignoriert.

Begrenzungen

Hinweis

Sie sollten sich dieser Beschränkungen bewusst sein, wenn Sie die API für Videoeinschränkungen verwenden. Einige der genannten Beschränkungen werden in zukünftigen Releases aufgehoben.

Es gelten einige bekannte Beschränkungen für die aktuelle Version der API für Videoeinschränkungen.

  • Die Einschränkung ist eine max-Beschränkung, d. h. der mögliche Wert kann dem angegebenen Wert entsprechen oder diesen unterschreiten. Es gibt keine Garantie dafür, dass der tatsächliche Wert mit den Angaben der Benutzer*innen übereinstimmt.

  • Wenn die Benutzer*innen einen zu kleinen Wert für die Einschränkung festlegen, verwendet das SDK den kleinsten verfügbaren Wert, der unterstützt wird.

  • Bei der Festlegung von OutgoingVideoConstraints während eines Anrufs übernimmt der aktuell geöffnete Videostream nicht automatisch die angegebenen Einschränkungen. Damit die Einschränkungen wirksam werden, müssen Sie den ausgehenden Videostream anhalten und neu starten.

  • Bei IncomingVideoConstraints handelt es sich derzeit um eine Benutzerpräferenz und nicht um eine harte Einschränkung, d. h. je nach Netzwerk und Hardware kann der tatsächlich empfangene Wert die festgelegte Einschränkung weiterhin überschreiten.

Medienstatistiken

Um die Videoqualität nach Anwendung der Videoeinschränkungen zu bewerten und zu vergleichen, können Sie auf die MediaStats-API zugreifen, um Informationen zur Videoauflösung und Bitrate des Streams abzurufen. Die Medienstatistiken enthalten darüber hinaus weitere detaillierte Statistiken zu den Streams, z. B. Jitter, Paketverlust, Roundtripzeit usw.

Wichtig

Die in diesem Artikel beschriebenen Funktionen befinden sich derzeit in der öffentlichen Vorschauphase. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Überblick

Mit der API für Videoeinschränkungen können Entwickler*innen die Videoqualität innerhalb ihrer Videoaufrufe steuern. In diesem Schnellstartleitfaden wird veranschaulicht, wie Sie die API zum Festlegen der Einschränkungen verwenden.

Voraussetzungen

Informationen zum Einrichten einer Beispiel-App mit Sprachanrufen finden Sie unter dem Schnellstart: Sprachanruf.

Klassen

name Beschreibung
VideoConstraints Wird verwendet, um sowohl für eingehende als auch für ausgehende Videodaten Einschränkungen festzulegen.
OutgoingVideoConstraints Dient zur Angabe von Einschränkungen (maxWidth | maxHeight | maxFrameRate) für ausgehende Videostreams.
IncomingVideoConstraints Dient zur Angabe von Einschränkungen (maxWidth | maxHeight) für eingehende Videostreams.

Verwenden von Videoeinschränkungen

In den folgenden Abschnitten wird erläutert, wie die Videoeinschränkungen für eingehende und/oder ausgehende Videostreams zu verschiedenen Zeiten eines Anrufs festgelegt werden können.

Festlegen von Videoeinschränkungen vor Beginn eines Anrufs

Für eingehende Videostreams muss den IncomingVideoOptions ein IncomingVideoConstraints-Element hinzugefügt werden.

    let incomingVideoConstraints = IncomingVideoConstraints()
    incomingVideoConstraints.maxWidth = /*value*/ 
    incomingVideoConstraints.maxHeight = /*value*/ 
    
    // ...
    
    let incomingVideoOptions = IncomingVideoOptions()
    incomingVideoOptions.constraints = incomingVideoConstraints

Für ausgehende Videostreams muss den OutgoingVideoOptions ein OutgoingVideoConstraints-Element hinzugefügt werden.

    let outgoingVideoConstraints = OutgoingVideoConstraints()
    outgoingVideoConstraints.maxWidth = /*value*/ 
    outgoingVideoConstraints.maxHeight = /*value*/
    outgoingVideoConstraint.maxFrameRate = /*value*/ 
    
    // ...

    let outgoingVideoOptions = OutgoingVideoOptions()
    outgoingVideoOptions.constraints = outgoingVideoConstraints

Da die Optionen verwendet werden, um einen Aufruf zu starten bzw. einem Anruf beizutreten, können die Einschränkungen dann automatisch auf die Streams angewendet werden. Beispiel:

    let incomingVideoConstraints = IncomingVideoConstraints()
    incomingVideoConstraints.maxWidth = /*value*/ 
    incomingVideoConstraints.maxHeight = /*value*/ 
    let incomingVideoOptions = IncomingVideoOptions()
    incomingVideoOptions.constraints = incomingVideoConstraints
    
    let outgoingVideoConstraints = OutgoingVideoConstraints()
    outgoingVideoConstraints.maxWidth = /*value*/ 
    outgoingVideoConstraints.maxHeight = /*value*/
    outgoingVideoConstraint.maxFrameRate = /*value*/ 
    let outgoingVideoOptions = OutgoingVideoOptions()
    outgoingVideoOptions.constraints = outgoingVideoConstraints
    
    let joinCallOptions = new JoinCallOptions()
    joinCallOptions.incomingVideoOptions = incomingVideoOptions
    joinCallOptions.outgoingVideoOptions = outgoingVideoOptions

    callAgent.join(with: locator, joinCallOptions: joinCallOptions);

Festlegen von Videoeinschränkungen während eines Anrufs

Anstatt die Videoeinschränkungen vor Beginn eines Anrufs festzulegen, können Sie die Videoeinschränkungen auch während eines Anrufs dynamisch anpassen. Sie müssen set(videoConstraints) für Ihre Call-Typklasse aufrufen und die Einschränkungen angeben.


    let outgoingVideoConstraints = OutgoingVideoConstraints()
    outgoingVideoConstraints.maxWidth = /*value*/ 
    outgoingVideoConstraints.maxHeight = /*value*/
    outgoingVideoConstraint.maxFrameRate = /*value*/ 
    
    let incomingVideoConstraints = IncomingVideoConstraints()
    incomingVideoConstraints.maxWidth = /*value*/ 
    incomingVideoConstraints.maxHeight = /*value*/ 
  
    let videoConstraints = VideoConstraints()
    videoConstraints.outgoingVideoConstraints = outgoingVideoConstraints
    videoConstraints.incomingVideoConstraints = incomingVideoConstraints
    
    call?.set(videoConstraints: videoConstraints)

Um die zuvor festgelegten Videoeinschränkungen zurückzusetzen/zu entfernen, müssen Sie nach dem obigen Muster vorgehen und 0 als Einschränkungswert angeben. Die Angabe von null-Werten für IncomingVideoConstraints oder OutgoingVideoConstraints führt nicht zum Zurücksetzen/Entfernen der Einschränkungen und die Einschränkungen mit einem null-Wert werden ignoriert.

Begrenzungen

Hinweis

Sie sollten sich dieser Beschränkungen bewusst sein, wenn Sie die API für Videoeinschränkungen verwenden. Einige der genannten Beschränkungen werden in zukünftigen Releases aufgehoben.

Es gelten einige bekannte Beschränkungen für die aktuelle Version der API für Videoeinschränkungen.

  • Die Einschränkung ist eine max-Beschränkung, d. h. der mögliche Wert kann dem angegebenen Wert entsprechen oder diesen unterschreiten. Es gibt keine Garantie dafür, dass der tatsächliche Wert mit den Angaben der Benutzer*innen übereinstimmt.

  • Wenn die Benutzer*innen einen zu kleinen Wert für die Einschränkung festlegen, verwendet das SDK den kleinsten verfügbaren Wert, der unterstützt wird.

  • Bei der Festlegung von OutgoingVideoConstraints während eines Anrufs übernimmt der aktuell geöffnete Videostream nicht automatisch die angegebenen Einschränkungen. Damit die Einschränkungen wirksam werden, müssen Sie den ausgehenden Videostream anhalten und neu starten.

  • Bei IncomingVideoConstraints handelt es sich derzeit um eine Benutzerpräferenz und nicht um eine harte Einschränkung, d. h. je nach Netzwerk und Hardware kann der tatsächlich empfangene Wert die festgelegte Einschränkung weiterhin überschreiten.

Medienstatistiken

Um die Videoqualität nach Anwendung der Videoeinschränkungen zu bewerten und zu vergleichen, können Sie auf die MediaStats-API zugreifen, um Informationen zur Videoauflösung und Bitrate des Streams abzurufen. Die Medienstatistiken enthalten darüber hinaus weitere detaillierte Statistiken zu den Streams, z. B. Jitter, Paketverlust, Roundtripzeit usw.

Sie können Videoeinschränkungen in Ihren Aufrufen festlegen, um die Videoqualität basierend auf Auflösung oder FrameRate oder Bitrate in Ihren Videoanrufen zu steuern. In dieser Schnellstartanleitung wird veranschaulicht, wie Sie Videoeinschränkungen zu Beginn eines Aufrufs festlegen und wie Sie unsere setConstraints-Methode für das Aufrufobjekt verwenden, um Videoeinschränkungen während des Aufrufs dynamisch festzulegen.

Senden von Videoeinschränkungen

Das Azure Communication Services Web Calling SDK unterstützt das Festlegen der maximalen Videoauflösung, Framerate oder Bitrate, die ein Client sendet. Die Videoeinschränkungen des Absenders werden in Desktopbrowsern (Chrome, Edge, Firefox) und bei Verwendung des mobilen iOS Safari-Browsers oder des mobilen Android Chrome-Browsers unterstützt.

Unterstützte Einschränkungen
Eingehendes Video: Auflösung
Ausgehendes Video: Auflösung, Framerate, Bitrate

Festlegen von Videoeinschränkungen am Anfang eines Anrufs – Ausgehend (Senden) Video

Die Festlegung der Videoeinschränkungen wird in der Schnittstelle Call implementiert. Zur Verwendung der Videoeinschränkungen können Sie die Einschränkungen in den CallOptions angeben, wenn Sie einen Anruf tätigen, einen Anruf annehmen oder einem Anruf beitreten. Sie müssen localVideoStreams in videoOptions angeben.
Beachten Sie, dass die Einschränkungen nicht funktionieren, wenn Sie einem Anruf mit der Option „Nur Audio“ beitreten und die Kamera später einschalten. In diesem Fall können Sie Videoeinschränkungen dynamisch mit der setConstraints-Methode auf der Call-Schnittstelle festlegen.

const callOptions = {
    videoOptions: {
        localVideoStreams: [...],
        constraints: {
            send: {
                bitrate: {
                    max: 575000
                },
                frameHeight: {
                    max: 240
                },
                frameRate: {
                    max: 20
                }
            }
        }
    },
    audioOptions: {
        muted: false
    }
};
// make a call
this.callAgent.startCall(identitiesToCall, callOptions);
// join a group call
this.callAgent.join({ groupId }, callOptions);
// accept an incoming call
this.incomingCall.accept(callOptions)

Videoeinschränkungstypen werden wie folgt beschrieben:

export declare interface VideoOptions {
    localVideoStreams?: LocalVideoStream[];
    //video constraint when call starts
    constraints?: VideoConstraints;
};

export declare type VideoConstraints = {
    send?: VideoSendConstraints;
};

export type VideoSendConstraints = {
    /**
     * Resolution constraint
     */
    frameHeight?: MediaConstraintRange;

    /**
     * FrameRate constraint
     */
    frameRate?: MediaConstraintRange;

    /**
     * Bitrate constriant
     */
    bitrate?: MediaConstraintRange;
};

export declare type MediaConstraintRange = {
    max?: number;
};

Beim Festlegen von Videoeinschränkungen wählt das SDK den nächstgelegenen Wert aus, der in den Einschränkungssatz fällt, um zu verhindern, dass die Werte für Auflösung, FrameRate und Bitrate die festgelegten maximalen Einschränkungswerte nicht überschreiten. Auch wenn der Einschränkungswert für die Auflösung zu klein ist, wählt das SDK die kleinste verfügbare Auflösung aus. In diesem Fall kann die gewählte Auflösung größer sein als der Wert der Einschränkung.

Hinweis

Für alle bitrate, frameHeight und frameRate ist der Einschränkungswert eine max-Einschränkung, was bedeutet, dass der tatsächliche Wert im Aufruf der angegebene Wert oder kleiner sein kann. Es gibt keine Garantie dafür, dass die Auflösung des gesendeten Videos mit der angegebenen Auflösung übereinstimmt.

Der frameHeight-Wert in VideoSendConstraints hat eine andere Bedeutung, wenn sich ein Mobilgerät im Hochformatmodus befindet. Im Hochformatmodus gibt dieser Wert die kürzere Seite des Geräts an. Wenn Sie zum Beispiel auf einem Gerät mit den Maßen 1080(B) × 1920(H) im Hochformat für frameHeight.max den Wert 240 angeben, gilt die heigth-Einschränkung für die Seite mit der Länge 1080(B). Wenn sich dasselbe Gerät im Querformatmodus (1920(B) × 1080(H)) befindet, gilt die Einschränkung für die Seite mit der Länge 1080(H).

Wenn Sie Auflösung des gesendeten Videos mit der MediaStats-API nachverfolgen, stellen Sie möglicherweise fest, dass sich die Auflösung des gesendeten Videos während des Anrufs ändern kann. Der Wert kann sowohl nach oben als auch nach unten abweichen, sollte aber unter dem von Ihnen angegebenen Einschränkungswert liegen oder diesem entsprechen. Diese Änderung der Auflösung ist ein erwartetes Verhalten. Der Browser verfügt zudem über Regeln zur Leistungsminderung, um die Auflösung der gesendeten Videostreams an die CPU- oder Netzwerkbedingungen anzupassen.

Festlegen von Videoeinschränkungen während des Aufrufs - Ausgehend (Senden) Video

Sie können Videoeinschränkungen während des Aufrufs festlegen, indem Sie die setConstraints-Methode für das Call-Objekt verwenden.

// For eg, when you've started a call,
const currentCall = this.callAgent.startCall(identitiesToCall, callOptions);

// To set constraints during the call,
await currentCall.setConstraints({
    video: {
        send: {
            frameHeight: {
                max: 360
            },
            frameRate: {
                max: 15
            }
        }
    }
});

// To set only a particular constraint (the others will stay as what they were set before, if they were set)
await currentCall.setConstraints({
    video: {
        send: {
            bitrate: {
                max: 400000
            }
        }
    }
});

// To unset any constraint,
await currentCall.setConstraints({
    video: {
        send: {
            frameHeight: {
                max: 0
            }
        }
    }
});

Hinweis

Durch Festlegen des Einschränkungswerts als 0 werden alle zuvor festgelegten Einschränkungen aufgehoben. Auf diese Weise können Sie Einschränkungen zurücksetzen oder entfernen.


Empfangen von Videoeinschränkungen

Um die Auflösung auf der Empfängerseite mit Azure Communication Services Web Calling SDK zu steuern, können Sie die Größe des Renderers dieses Videos anpassen. Das SDK für Anrufe passt die empfangene Auflösung automatisch auf der Grundlage der Abmessungen des Renderers an. Das SDK fordert keinen eingehenden Videodatenstrom (Breite und Höhe) an, der in das Videofenster des Renderers passt.

Verwenden von Medienstatiken zum Verständnis der Auswirkungen von Videoeinschränkungen

Um die Videoqualität nach Anwendung der Videoeinschränkungen zu bewerten und zu vergleichen, können Sie auf die MediaStats-API zugreifen, um Informationen zur Videoauflösung und Bitrate des sendenden Streams abzurufen. Die Medienstatistiken enthalten darüber hinaus weitere detaillierte Statistiken zu den Streams, z. B. Jitter, Paketverlust, Roundtripzeit usw.

const mediaStatsFeature = call.feature(Features.MediaStats);
const mediaStatsCollector = mediaStatsFeature.createCollector();

mediaStatsCollector.on('sampleReported', (sample: SDK.MediaStatsReportSample) => {
    // process the stats for the call.
    console.log(sample);
});

Nächste Schritte

Weitere Informationen finden Sie in den folgenden Artikeln: