Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Fontos
Az Azure Communication Services ezen funkciója jelenleg előzetes verzióban van. Az előzetes verziójú funkciók nyilvánosan elérhetők, és minden új és meglévő Microsoft-ügyfél használhatja.
Ez az előzetes verzió szolgáltatásszintű szerződés nélkül érhető el, és éles számítási feladatokhoz nem javasoljuk. Előfordulhat, hogy bizonyos funkciók nem támogatottak, vagy a képességek korlátozottak lehetnek.
További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.
Áttekintés
A Video Constraints API lehetővé teszi a fejlesztők számára, hogy a videóminőséget a videohívásaikon belül szabályozhassák. Ebben a rövid útmutatóban bemutatjuk, hogyan állíthatja be az API-t a korlátozások beállításához.
Előfeltételek
A hanghívást tartalmazó mintaalkalmazás beállításához tekintse meg a Hanghívás rövid útmutatóját .
Osztályok
Név | Leírás |
---|---|
Videókorlátozások | A bejövő és a kimenő videokorlátok tárolására szolgál. |
Kimenő videókorlátozások | A kimenő videostreamek korlátozásainak (MaxWidth \| MaxHeight \| MaxFrameRate ) megadására szolgál. |
Bejövő videókorlátozások | A bejövő videostreamekre vonatkozó korlátozások (MaxWidth \| MaxHeight ) megadására szolgál. |
Videókorlátozások használata
Az alábbi szakaszok bemutatják, hogyan állíthatók be a videokényszerítések a bejövő és/vagy kimenő videostreamekhez a hívás különböző időpontaiban.
Videokorlátok beállítása hívás indítása előtt
A bejövő videostreamekhez a IncomingVideoConstraints
eleméhez hozzá kell adni egy IncomingVideoOptions
-et.
var IncomingVideoOptions = new IncomingVideoOptions()
{
Constraints = new IncomingVideoConstraints()
{
MaxWidth = /*value*/,
MaxHeight = /*value*/
},
// other options
// ...
}
Kimenő videostreamekhez be kell illeszteni egy OutgoingVideoConstraints
a OutgoingVideoOptions
.
var OutgoingVideoOptions = new OutgoingVideoOptions()
{
Constraints = new OutgoingVideoConstraints()
{
MaxWidth = /*value*/,
MaxHeight = /*value*/,
MaxFrameRate = /*value*/
},
// other options
// ...
}
Mivel a beállítások a hívások indítására/csatlakoztatására szolgálnak, a korlátozások automatikusan alkalmazhatók a streamekre. Példa:
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);
Videokorlátok beállítása hívás közben
Ahelyett, hogy a hívás indítása előtt beállítaná a videokényszereket, dinamikusan módosíthatja a videokényszereket a hívás során. Be kell hívnia SetVideoConstraints
a típusosztályt Call
, és meg kell adnia a korlátozásokat.
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);
A korábban beállított videókorlátok alaphelyzetbe állításához/eltávolításához kövesse az előző mintát, és adjon meg 0
kényszerértéket. Az null
, IncomingVideoConstraints
vagy OutgoingVideoConstraints
értékek megadása nem állítja vissza, illetve nem távolítja el a kényszereket, és az null
értékhez kapcsolódó korlátozások figyelmen kívül maradnak.
Korlátozások
Feljegyzés
Vegye figyelembe ezeket a korlátozásokat a Video Constraints API használatakor. Néhány korlátozást meg kell oldani a jövőbeli kiadásokban.
Az aktuális Video Constraints API néhány ismert korlátozást is ismert.
A kényszer egy maximális kényszer, ami azt jelenti, hogy a lehetséges kényszerérték lehet a megadott érték vagy kisebb. Nincs garancia arra, hogy a tényleges érték megegyezik a felhasználó által megadott értékkel.
Ha a felhasználó túl kicsi kényszerértéket állít be, az SDK a támogatott legkisebb elérhető értéket használja.
A
OutgoingVideoConstraints
beállítása hívás közben azzal jár, hogy az aktuális videostream nem veszi automatikusan figyelembe a megadott korlátozásokat. A korlátozások érvénybe lépéséhez le kell állítania és újra kell indítania a kimenő videót.IncomingVideoConstraints
jelenleg egy felhasználói preferenciáknak megfelelő kényszer van érvényben a szigorú kényszer helyett, ami azt jelenti, hogy a hálózattól és a hardvertől függően az elért tényleges érték még így is meghaladhatja a beállított kényszert.
Médiastatisztikák
A videóminőség kiértékeléséhez és összehasonlításához a videómegkötések alkalmazása után hozzáférhet a MediaStats API-hoz a stream videófelbontási és bitrátaadatainak lekéréséhez. A médiastatisztikák a streamekhez kapcsolódó egyéb részletes statisztikákat is tartalmaznak, például a jittert, a csomagvesztést, a menetidőt stb.
Fontos
Az Azure Communication Services ezen funkciója jelenleg előzetes verzióban van. Az előzetes verziójú funkciók nyilvánosan elérhetők, és minden új és meglévő Microsoft-ügyfél használhatja.
Ez az előzetes verzió szolgáltatásszintű szerződés nélkül érhető el, és éles számítási feladatokhoz nem javasoljuk. Előfordulhat, hogy bizonyos funkciók nem támogatottak, vagy a képességek korlátozottak lehetnek.
További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.
Áttekintés
A Video Constraints API lehetővé teszi a fejlesztők számára, hogy a videóminőséget a videohívásaikon belül szabályozhassák. Ebben a cikkben bemutatjuk, hogyan állíthatja be a korlátozásokat az API használatával.
Előfeltételek
A hanghívást tartalmazó mintaalkalmazás beállításához tekintse meg a Hanghívás rövid útmutatóját .
Osztályok
Név | Leírás |
---|---|
Videókorlátozások | A bejövő és a kimenő videokorlátok tárolására szolgál. |
Kimenő videókorlátozások | A kimenő videostreamek korlátozásainak (maxWidth \| maxHeight \| maxFrameRate ) megadására szolgál. |
Bejövő videókorlátozások | A bejövő videostreamekre vonatkozó korlátozások (maxWidth \| maxHeight ) megadására szolgál. |
Videókorlátozások használata
Az alábbi szakaszok bemutatják, hogyan állíthatók be a videokényszerítések a bejövő és/vagy kimenő videostreamekhez a hívás különböző időpontaiban.
Videokorlátok beállítása hívás indítása előtt
A bejövő videófolyamok esetén hozzá kell adni egy IncomingVideoConstraints
elemet a IncomingVideoOptions
.
IncomingVideoConstraints incomingVideoConstraints = new IncomingVideoConstraints();
incomingVideoConstraints.setMaxWidth(/*value*/);
incomingVideoConstraints.setMaxHeight(/*value*/);
// ...
IncomingVideoOptions incomingVideoOptions = new IncomingVideoOptions();
incomingVideoOptions.setConstraints(incomingVideoConstraints);
A kimenő videófolyamokhoz adjon hozzá egy OutgoingVideoConstraints
elemet a OutgoingVideoOptions
.
OutgoingVideoConstraints outgoingVideoConstraints = new OutgoingVideoConstraints()
outgoingVideoConstraints.setMaxWidth(/*value*/);
outgoingVideoConstraints.setMaxHeight(/*value*/);
outgoingVideoConstraints.setMaxFrameRate(/*value*/);
// ...
OutgoingVideoOptions outgoingVideoOptions = new OutgoingVideoOptions();
outgoingVideoOptions.setConstraints(outgoingVideoConstraints);
Mivel a beállítások a hívások indítására/csatlakoztatására szolgálnak, a korlátozásokat automatikusan alkalmazhatja a streamekre. Példa:
JoinCallOptions joinCallOptions = new JoinCallOptions();
joinCallOptions.setIncomingVideoOptions(incomingVideoOptions);
joinCallOptions.setOutgoingVideoOptions(outgoingVideoOptions);
callAgent.Join(context, locator, joinCallOptions);
Videokorlátok beállítása hívás közben
Ahelyett, hogy a hívás indítása előtt beállítaná a videokényszereket, dinamikusan módosíthatja a videokényszereket a hívás során. Be kell hívnia setVideoConstraints
a típusosztályt Call
, és meg kell adnia a korlátozásokat.
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);
A korábban beállított videókorlátok alaphelyzetbe állításához/eltávolításához kövesse az előző mintát, és adjon meg 0
kényszerértéket. Ha null
értékeket ad meg, akárcsak IncomingVideoConstraints
vagy OutgoingVideoConstraints
, az nem állítja vissza vagy távolítja el a kényszereket, és a null
értékű kényszerek figyelmen kívül maradnak.
Korlátozások
Feljegyzés
Vegye figyelembe ezeket a korlátozásokat a Video Constraints API használatakor. Néhány korlátozást meg kell oldani a jövőbeli kiadásokban.
Az aktuális Video Constraints API néhány ismert korlátozást is ismert.
A kényszer egy maximális kényszer, ami azt jelenti, hogy a lehetséges kényszerérték lehet a megadott érték vagy kisebb. Nincs garancia arra, hogy a tényleges érték megegyezik a felhasználó által megadott értékkel.
Ha a felhasználó túl kicsi kényszerértéket állít be, az SDK a támogatott legkisebb elérhető értéket használja.
A
OutgoingVideoConstraints
beállítása hívás közben azzal jár, hogy az aktuális videostream nem veszi automatikusan figyelembe a megadott korlátozásokat. A korlátozások érvénybe lépéséhez le kell állítania és újra kell indítania a kimenő videót.IncomingVideoConstraints
jelenleg inkább egy rugalmas, felhasználó által előnyben részesített korlát, a kemény határ helyett. Ez azt jelenti, hogy a hálózattól és a hardvertől függően a ténylegesen kapott érték még mindig meghaladhatja a beállított korlátot.
Médiastatisztikák
A videóminőség kiértékeléséhez és összehasonlításához a videómegkötések alkalmazása után hozzáférhet a MediaStats API-hoz a stream videófelbontási és bitrátaadatainak lekéréséhez. A médiastatisztikák a streamekhez kapcsolódó egyéb részletes statisztikákat is tartalmaznak, például a jittert, a csomagvesztést, a menetidőt stb.
Fontos
Az Azure Communication Services ezen funkciója jelenleg előzetes verzióban van. Az előzetes verziójú funkciók nyilvánosan elérhetők, és minden új és meglévő Microsoft-ügyfél használhatja.
Ez az előzetes verzió szolgáltatásszintű szerződés nélkül érhető el, és éles számítási feladatokhoz nem javasoljuk. Előfordulhat, hogy bizonyos funkciók nem támogatottak, vagy a képességek korlátozottak lehetnek.
További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.
Áttekintés
A Video Constraints API lehetővé teszi a fejlesztők számára, hogy a videóminőséget a videohívásaikon belül szabályozhassák. Ebben a rövid útmutatóban bemutatjuk, hogyan állíthatja be az API-t a korlátozások beállításához.
Előfeltételek
A hanghívást tartalmazó mintaalkalmazás beállításához tekintse meg a Hanghívás rövid útmutatóját .
Osztályok
Név | Leírás |
---|---|
Videókorlátozások | A bejövő és a kimenő videokorlátok tárolására szolgál. |
Kimenő videókorlátozások | A kimenő videostreamek korlátozásainak (maxWidth \| maxHeight \| maxFrameRate ) megadására szolgál. |
Bejövő videókorlátozások | A bejövő videostreamekre vonatkozó korlátozások (maxWidth \| maxHeight ) megadására szolgál. |
Videókorlátozások használata
Az alábbi szakaszok bemutatják, hogyan állíthatók be a videokényszerítések a bejövő és/vagy kimenő videostreamekhez a hívás különböző időpontaiban.
Videokorlátok beállítása hívás indítása előtt
A bejövő videostreamekhez hozzá kell adni a IncomingVideoConstraints
a IncomingVideoOptions
.
let incomingVideoConstraints = IncomingVideoConstraints()
incomingVideoConstraints.maxWidth = /*value*/
incomingVideoConstraints.maxHeight = /*value*/
// ...
let incomingVideoOptions = IncomingVideoOptions()
incomingVideoOptions.constraints = incomingVideoConstraints
Kimenő videostreamekhez be kell illeszteni egy OutgoingVideoConstraints
a OutgoingVideoOptions
.
let outgoingVideoConstraints = OutgoingVideoConstraints()
outgoingVideoConstraints.maxWidth = /*value*/
outgoingVideoConstraints.maxHeight = /*value*/
outgoingVideoConstraint.maxFrameRate = /*value*/
// ...
let outgoingVideoOptions = OutgoingVideoOptions()
outgoingVideoOptions.constraints = outgoingVideoConstraints
Mivel a beállítások a hívások indítására/csatlakoztatására szolgálnak, a korlátozások automatikusan alkalmazhatók a streamekre. Példa:
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);
Videokorlátok beállítása hívás közben
Ahelyett, hogy beállítaná a videokorlátokat a hívás indítása előtt, dinamikusan módosíthatja a videokényszereket a hívás során. Be kell hívnia set(videoConstraints)
a típusosztályt Call
, és meg kell adnia a korlátozásokat.
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)
A korábban beállított videókorlátok alaphelyzetbe állításához/eltávolításához kövesse az előző mintát, és adjon meg 0
kényszerértéket. Ha null
, IncomingVideoConstraints
vagy OutgoingVideoConstraints
számára ad meg értékeket, az nem állítja vissza/távolítja el a kényszereket, és a null
értékkel rendelkező kényszerek figyelmen kívül maradnak.
Korlátozások
Feljegyzés
Vegye figyelembe ezeket a korlátozásokat a Video Constraints API használatakor. Néhány korlátozást meg kell oldani a jövőbeli kiadásokban.
Az aktuális Video Constraints API néhány ismert korlátozást is ismert.
A kényszer egy maximális kényszer, ami azt jelenti, hogy a lehetséges kényszerérték lehet a megadott érték vagy kisebb. Nincs garancia arra, hogy a tényleges érték megegyezik a felhasználó által megadott értékkel.
Ha a felhasználó túl kicsi kényszerértéket állít be, az SDK a támogatott legkisebb elérhető értéket használja.
A
OutgoingVideoConstraints
beállítása hívás közben azzal jár, hogy az aktuális videostream nem veszi automatikusan figyelembe a megadott korlátozásokat. A korlátozások érvénybe lépéséhez le kell állítania és újra kell indítania a kimenő videót.IncomingVideoConstraints
jelenleg a felhasználói preferenciák szerinti korlátozásként működik a kemény korlát helyett, ami azt jelenti, hogy a hálózati és hardveres körülményektől függően a ténylegesen kapott érték túllépheti a beállított korlátozást.
Médiastatisztikák
A videóminőség kiértékeléséhez és összehasonlításához a videómegkötések alkalmazása után hozzáférhet a MediaStats API-hoz a stream videófelbontási és bitrátaadatainak lekéréséhez. A médiastatisztikák a streamekhez kapcsolódó egyéb részletes statisztikákat is tartalmaznak, például a jittert, a csomagvesztést, a menetidőt stb.
A hívásokban beállíthatja a videokonfigurációkra vonatkozó korlátozásokat, hogy a videóminőséget a felbontás, a frameRate vagy a bitráta alapján szabályozhassa a videohívásokban. Ebben a rövid útmutatóban bemutatjuk, hogyan állíthat be videokényszereket a hívás elején, és hogyan használhatja a metódust setConstraints
a hívásobjektumon a videokorlátok dinamikus beállításához a hívás során.
Videókra vonatkozó korlátozások küldése
Az Azure Communication Services Web Calling SDK támogatja az ügyfél által küldött maximális videofelbontás, képkockasebesség vagy bitráta beállítását. A küldő videóra vonatkozó korlátozások asztali böngészőkben (Chrome, Microsoft Edge, Firefox) és iOS Safari mobilböngésző vagy Android Chrome mobilböngésző használata esetén támogatottak.
Támogatott korlátozások |
---|
Bejövő videó: felbontás Kimenő videó: felbontás, képkockasebesség, bitráta |
Videokorlátok beállítása a hívás elején – kimenő (küldési) videó
A videokényszer-beállítás implementálva van a Call
felületen. A videókorlátok használatához megadhatja a korlátozásokat belülről CallOptions
, amikor hívást kezdeményez, fogad egy hívást, vagy csatlakozik egy híváshoz. Meg kell adnia localVideoStreams
a következőt: videoOptions
.
A korlátozások nem működnek, ha csak hangbeállítással csatlakozik egy híváshoz, és később bekapcsolja a kamerát. Ebben az esetben a videokényszereket dinamikusan állíthatja be a setConstraints
felület Call
metódusával.
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)
A videokényszer-típusok leírása a következő:
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;
};
Videokényszer beállításakor az SDK a kényszerkészletbe tartozó legközelebbi értéket választja ki, így megakadályozza, hogy a felbontás, a frameRate és a bitráta értékei ne lépik túl a beállított maximális korlátértékeket. Ha a feloldási kényszer értéke túl kicsi, az SDK a legkisebb elérhető felbontást választja ki. Ebben az esetben a választott felbontás magassága nagyobb lehet, mint a kényszerérték.
Feljegyzés
A kényszerérték minden bitrate
, frameHeight
és frameRate
esetében egy max
kényszer, ami azt jelenti, hogy a hívás tényleges értéke lehet a megadott érték vagy kisebb.
Nincs garancia arra, hogy az elküldött videofelbontás a megadott felbontáson marad.
A frameHeight
a VideoSendConstraints
-ben más jelentéssel bír, ha egy mobileszköz álló módban van. Álló módban ez az érték az eszköz rövidebb oldalát jelzi. Például egy 1080(W) x 1920(H) eszközön álló módban, ha megadja a frameHeight.max
értéket 240-re, a kényszer magassága a 1080(W) oldalon van. Ha ugyanaz az eszköz fekvő módban van (1920(W) x 1080(H)), a korlátozás az 1080(H) oldalon van.
Ha a MediaStats API-val követi nyomon az elküldött videofelbontást, előfordulhat, hogy az elküldött felbontás változhat a hívás során. Felfelé és lefelé is mehet, de egyenlőnek vagy kisebbnek kell lennie, mint a megadott kényszerérték. Ez a megoldásváltozás egy várt viselkedés. A böngésző is rendelkezik néhány degradációs szabálysal, amely az elküldött felbontást a processzor vagy a hálózati feltételek alapján módosítja.
Videokorlátok beállítása a hívás során – kimenő (küldési) videó
A hívás során a videókorlátokat a setConstraints
objektum Call
metódusával állíthatja be.
// 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
}
}
}
});
Feljegyzés
A 0
érték beállítása minden korábban beállított kényszert visszavon. Ezzel a módszerrel alaphelyzetbe állíthatja vagy eltávolíthatja a korlátozásokat.
Videóbeli korlátok fogadása
A bejövő streamek videominőségének kezelése magában foglalja az Azure Communication Services felbontási létrájának megértését, amely a videófeloldások előre definiált listája a becsült felső és alsó bitrátahatárokkal. Amikor egy ügyfél konkrét megoldást kér, a WebJS és a háttérkiszolgáló a felbontási létrával egyeztetve lefoglalja a megfelelő videobitrátát, figyelembe véve a hálózati feltételeket és az eszköz képességeit is.
A videómegjelenítés méretének meghatározása kulcsfontosságú lépés a fejlesztők számára, amelyek célja a bejövő videostreamek bitráta- és képkockasebességének szabályozása. A videóstreamek kezdeti minőségét és felbontását a weblapon létrehozott és elhelyezett renderelő mérete határozza meg. Ha például a renderelő kicsi, a WebJS SDK kisebb felbontást kér. Ha a renderelő nagy, az ACS SDK a lehető legjobb felbontásra törekszik a kiszolgálóról. Ez a folyamat biztosítja, hogy a videó minősége az ügyfél igényeinek és képességeinek megfelelően legyen optimalizálva. Amikor egy ügyfél egy adott felbontást kér, a kiszolgáló konzultál a felbontási létrával a megfelelő videobitráta lefoglalásához, figyelembe véve a hálózati feltételeket és az eszköz képességeit is.
A felbontási létratábla megadja, miből áll a WebJS hívó SDK felbontási létrája a különböző felbontásokhoz tartozó becsült bejövő videobitrátákkal. Ezek a részletek segítenek a fejlesztőknek megérteni a felbontás, a bitsebesség és a képkockasebesség, valamint az adott bejövő videostream által használt sávszélesség hozzávetőleges mennyiségét. Például egy 1280x720-as felbontású stream 30 FPS sebességgel, ahol az ügyfél hozzávetőlegesen egy (1) MBPS minimális és két és fél (2,5) MBPS maximális bitsebességet használ.
Az Azure Communication Services WebJS Calling SDK a rendelkezésre álló sávszélesség alapján módosítja a videó méretét, hogy egységes kommunikációs élményt biztosítson. A WebJS Calling SDK a hálózati feltételeket figyelő algoritmusok alapján módosítja a videó méretét. Ha a hálózati sávszélesség elegendő, az SDK a weblapon meghatározott renderelési méret alapján a videófelbontást a maximális szintre növeli. Ezzel szemben, ha a sávszélesség korlátozott, csökkenti a videofelbontást a pufferelés megakadályozása és a stabil kapcsolat fenntartása érdekében.
Az alábbi táblázat a felbontáslétrátát és a becsült bitrátát tartalmazza az egyes felbontásokhoz és az adott felbontáshoz kapcsolódó FPS-hez.
Magasság | Szélesség | FPS | Minimális bitráta (MBps) | Maximális bitráta (MBps) |
---|---|---|---|---|
1080 | 1920 | 30 | 1,75 | 10 |
720 | 1280 | 30 | 1 | 2,5 |
540 | 960 | 30 | 0,5 | 1,125 |
360 | 640 | 30 | 0,4 | 0.57 |
240 | 426 | 15 | 0,125 | 0,5 |
240 | 320 | 15 | 0,2 | 0.175 |
Médiastatikák használata a videókorlátok hatásának megértéséhez
A videóminőség kiértékeléséhez és összehasonlításához a videómegkötések alkalmazása után hozzáférhet a MediaStats API-hoz a küldő stream videofelbontási és bitrátaadatainak lekéréséhez. A médiastatisztikák a streamekhez kapcsolódó egyéb részletes statisztikákat is tartalmaznak, például a jittert, a csomagvesztést, a menetidőt stb.
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);
});