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 constraint
*/
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 die angegebene Auflösung beibehält.
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:
- Konzeptdokument zu Videoeinschränkungen
- Erfahren Sie mehr über die Funktionen des Calling SDK.