Udostępnij za pośrednictwem


Szybki start: ustawianie ograniczeń wideo w aplikacji wywołującej

Ważne

Funkcje opisane w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

Omówienie

Interfejs API ograniczeń wideo umożliwia deweloperom kontrolowanie jakości wideo z poziomu wywołań wideo. W tym przewodniku Szybki start pokazano, jak używać interfejsu API do ustawiania ograniczeń.

Wymagania wstępne

Zapoznaj się z przewodnikiem Szybki start dotyczący połączeń głosowych, aby skonfigurować przykładową aplikację przy użyciu połączeń głosowych.

Klasy

Nazwa/nazwisko opis
Ograniczenia wideo Służy do przechowywania zarówno przychodzących ograniczeń wideo, jak i wychodzących ograniczeń wideo.
Ograniczenia wychodząceVideo Służy do określania ograniczeń (MaxWidth | MaxHeight | MaxFrameRate) dla wychodzących strumieni wideo.
Ograniczenia dotyczące video przychodzącego Służy do określania ograniczeń (MaxWidth | MaxHeight) dla przychodzących strumieni wideo.

Korzystanie z ograniczeń wideo

W poniższych sekcjach opisano, jak można ustawić ograniczenia wideo dla przychodzących i/lub wychodzących strumieni wideo w różnych porach wywołania.

Ustawianie ograniczeń wideo przed rozpoczęciem połączenia

W przypadku przychodzących strumieni wideo należy dodać element IncomingVideoConstraints do elementu IncomingVideoOptions.

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

W przypadku wychodzących OutgoingVideoConstraints strumieni wideo należy dodać element do elementu OutgoingVideoOptions.

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

Ponieważ opcje są używane do uruchamiania/dołączania wywołania, ograniczenia mogą być stosowane automatycznie do strumieni. Na przykład:

    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);

Ustawianie ograniczeń wideo podczas wywołania

Zamiast ustawiać ograniczenia wideo przed rozpoczęciem wywołania, można również dynamicznie dostosowywać ograniczenia wideo podczas wywołania. Musisz wywołać SetVideoConstraints klasę Call typu i podać ograniczenia.


    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);

Aby zresetować/usunąć wcześniej ustawione ograniczenia wideo, musisz postępować zgodnie z powyższym wzorcem i podać 0 jako wartość ograniczenia. Podanie null wartości albo IncomingVideoConstraints OutgoingVideoConstraints nie spowoduje zresetowania/usunięcia ograniczeń, a ograniczenia z wartością null zostaną zignorowane.

Ograniczenia

Uwaga

Pamiętaj, aby pamiętać o tych ograniczeniach podczas korzystania z interfejsu API ograniczeń wideo. Niektóre ograniczenia zostaną usunięte w przyszłych wersjach.

Istnieją pewne znane ograniczenia dotyczące bieżącego interfejsu API ograniczeń wideo.

  • Ograniczenie jest ograniczeniem maksymalnym, co oznacza, że możliwe ograniczenie może być określoną wartością lub mniejszą. Nie ma gwarancji, że rzeczywista wartość pozostaje taka sama jak określona przez użytkownika.

  • Gdy użytkownik ustawia wartość ograniczenia, która jest zbyt mała, zestaw SDK będzie używać najmniejszej dostępnej wartości, która jest obsługiwana.

  • W przypadku ustawienia OutgoingVideoConstraints podczas wywołania bieżący strumień wideo nie pobiera automatycznie określonych ograniczeń. Aby ograniczenia zaczęły obowiązywać, należy zatrzymać i ponownie uruchomić wychodzące wideo.

  • IncomingVideoConstraints obecnie jest preferowanym przez użytkownika ograniczeniem zamiast ograniczenia twardego, co oznacza, że w zależności od sieci i sprzętu rzeczywista wartość odebrana może nadal przekraczać zestaw ograniczeń.

Statystyki multimediów

Aby ocenić i porównać jakość wideo po zastosowaniu ograniczeń wideo, możesz uzyskać dostęp do interfejsu API MediaStats, aby uzyskać informacje o rozdzielczości i szybkości transmisji bitów strumienia. Statystyki multimediów obejmują również inne szczegółowe statystyki związane ze strumieniami, takie jak zakłócenia, utrata pakietów, czas rundy itp.

Ważne

Funkcje opisane w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

Omówienie

Interfejs API ograniczeń wideo umożliwia deweloperom kontrolowanie jakości wideo z poziomu wywołań wideo. W tym przewodniku Szybki start pokazano, jak używać interfejsu API do ustawiania ograniczeń.

Wymagania wstępne

Zapoznaj się z przewodnikiem Szybki start dotyczący połączeń głosowych, aby skonfigurować przykładową aplikację przy użyciu połączeń głosowych.

Klasy

Nazwa/nazwisko opis
Ograniczenia wideo Służy do przechowywania zarówno przychodzących ograniczeń wideo, jak i wychodzących ograniczeń wideo.
Ograniczenia wychodząceVideo Służy do określania ograniczeń (maxWidth | maxHeight | maxFrameRate) dla wychodzących strumieni wideo.
Ograniczenia dotyczące video przychodzącego Służy do określania ograniczeń (maxWidth | maxHeight) dla przychodzących strumieni wideo.

Korzystanie z ograniczeń wideo

W poniższych sekcjach opisano, jak można ustawić ograniczenia wideo dla przychodzących i/lub wychodzących strumieni wideo w różnych porach wywołania.

Ustawianie ograniczeń wideo przed rozpoczęciem połączenia

W przypadku przychodzących strumieni wideo należy dodać element IncomingVideoConstraints do elementu IncomingVideoOptions.

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

    // ...

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

W przypadku wychodzących OutgoingVideoConstraints strumieni wideo należy dodać element do elementu OutgoingVideoOptions.

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

Ponieważ opcje są używane do uruchamiania/dołączania wywołania, ograniczenia mogą być stosowane automatycznie do strumieni. Na przykład:

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

Ustawianie ograniczeń wideo podczas wywołania

Zamiast ustawiać ograniczenia wideo przed rozpoczęciem wywołania, można również dynamicznie dostosowywać ograniczenia wideo podczas wywołania. Musisz wywołać setVideoConstraints klasę Call typu i podać ograniczenia.


    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);

Aby zresetować/usunąć wcześniej ustawione ograniczenia wideo, musisz postępować zgodnie z powyższym wzorcem i podać 0 jako wartość ograniczenia. Podanie null wartości albo IncomingVideoConstraints OutgoingVideoConstraints nie spowoduje zresetowania/usunięcia ograniczeń, a ograniczenia z wartością null zostaną zignorowane.

Ograniczenia

Uwaga

Pamiętaj, aby pamiętać o tych ograniczeniach podczas korzystania z interfejsu API ograniczeń wideo. Niektóre ograniczenia zostaną usunięte w przyszłych wersjach.

Istnieją pewne znane ograniczenia dotyczące bieżącego interfejsu API ograniczeń wideo.

  • Ograniczenie jest ograniczeniem maksymalnym, co oznacza, że możliwe ograniczenie może być określoną wartością lub mniejszą. Nie ma gwarancji, że rzeczywista wartość pozostaje taka sama jak określona przez użytkownika.

  • Gdy użytkownik ustawia wartość ograniczenia, która jest zbyt mała, zestaw SDK będzie używać najmniejszej dostępnej wartości, która jest obsługiwana.

  • W przypadku ustawienia OutgoingVideoConstraints podczas wywołania bieżący strumień wideo nie pobiera automatycznie określonych ograniczeń. Aby ograniczenia zaczęły obowiązywać, należy zatrzymać i ponownie uruchomić wychodzące wideo.

  • IncomingVideoConstraints obecnie jest preferowanym przez użytkownika ograniczeniem zamiast ograniczenia twardego, co oznacza, że w zależności od sieci i sprzętu rzeczywista wartość odebrana może nadal przekraczać zestaw ograniczeń.

Statystyki multimediów

Aby ocenić i porównać jakość wideo po zastosowaniu ograniczeń wideo, możesz uzyskać dostęp do interfejsu API MediaStats, aby uzyskać informacje o rozdzielczości i szybkości transmisji bitów strumienia. Statystyki multimediów obejmują również inne szczegółowe statystyki związane ze strumieniami, takie jak zakłócenia, utrata pakietów, czas rundy itp.

Ważne

Funkcje opisane w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

Omówienie

Interfejs API ograniczeń wideo umożliwia deweloperom kontrolowanie jakości wideo z poziomu wywołań wideo. W tym przewodniku Szybki start pokazano, jak używać interfejsu API do ustawiania ograniczeń.

Wymagania wstępne

Zapoznaj się z przewodnikiem Szybki start dotyczący połączeń głosowych, aby skonfigurować przykładową aplikację przy użyciu połączeń głosowych.

Klasy

Nazwa/nazwisko opis
Ograniczenia wideo Służy do przechowywania zarówno przychodzących ograniczeń wideo, jak i wychodzących ograniczeń wideo.
Ograniczenia wychodząceVideo Służy do określania ograniczeń (maxWidth | maxHeight | maxFrameRate) dla wychodzących strumieni wideo.
Ograniczenia dotyczące video przychodzącego Służy do określania ograniczeń (maxWidth | maxHeight) dla przychodzących strumieni wideo.

Korzystanie z ograniczeń wideo

W poniższych sekcjach opisano, jak można ustawić ograniczenia wideo dla przychodzących i/lub wychodzących strumieni wideo w różnych porach wywołania.

Ustawianie ograniczeń wideo przed rozpoczęciem połączenia

W przypadku przychodzących strumieni wideo należy dodać element IncomingVideoConstraints do elementu IncomingVideoOptions.

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

W przypadku wychodzących OutgoingVideoConstraints strumieni wideo należy dodać element do elementu OutgoingVideoOptions.

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

    let outgoingVideoOptions = OutgoingVideoOptions()
    outgoingVideoOptions.constraints = outgoingVideoConstraints

Ponieważ opcje są używane do uruchamiania/dołączania wywołania, ograniczenia mogą być stosowane automatycznie do strumieni. Na przykład:

    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);

Ustawianie ograniczeń wideo podczas wywołania

Zamiast ustawiać ograniczenia wideo przed rozpoczęciem wywołania, można również dynamicznie dostosowywać ograniczenia wideo podczas wywołania. Musisz wywołać set(videoConstraints) klasę Call typu i podać ograniczenia.


    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)

Aby zresetować/usunąć wcześniej ustawione ograniczenia wideo, musisz postępować zgodnie z powyższym wzorcem i podać 0 jako wartość ograniczenia. Podanie null wartości albo IncomingVideoConstraints OutgoingVideoConstraints nie spowoduje zresetowania/usunięcia ograniczeń, a ograniczenia z wartością null zostaną zignorowane.

Ograniczenia

Uwaga

Pamiętaj, aby pamiętać o tych ograniczeniach podczas korzystania z interfejsu API ograniczeń wideo. Niektóre ograniczenia zostaną usunięte w przyszłych wersjach.

Istnieją pewne znane ograniczenia dotyczące bieżącego interfejsu API ograniczeń wideo.

  • Ograniczenie jest ograniczeniem maksymalnym, co oznacza, że możliwe ograniczenie może być określoną wartością lub mniejszą. Nie ma gwarancji, że rzeczywista wartość pozostaje taka sama jak określona przez użytkownika.

  • Gdy użytkownik ustawia wartość ograniczenia, która jest zbyt mała, zestaw SDK będzie używać najmniejszej dostępnej wartości, która jest obsługiwana.

  • W przypadku ustawienia OutgoingVideoConstraints podczas wywołania bieżący strumień wideo nie pobiera automatycznie określonych ograniczeń. Aby ograniczenia zaczęły obowiązywać, należy zatrzymać i ponownie uruchomić wychodzące wideo.

  • IncomingVideoConstraints obecnie jest preferowanym przez użytkownika ograniczeniem zamiast ograniczenia twardego, co oznacza, że w zależności od sieci i sprzętu rzeczywista wartość odebrana może nadal przekraczać zestaw ograniczeń.

Statystyki multimediów

Aby ocenić i porównać jakość wideo po zastosowaniu ograniczeń wideo, możesz uzyskać dostęp do interfejsu API MediaStats, aby uzyskać informacje o rozdzielczości i szybkości transmisji bitów strumienia. Statystyki multimediów obejmują również inne szczegółowe statystyki związane ze strumieniami, takie jak zakłócenia, utrata pakietów, czas rundy itp.

Ograniczenia wideo można ustawić w wywołaniach w celu kontrolowania jakości wideo na podstawie rozdzielczości, szybkości klatek lub szybkości transmisji bitów w wywołaniach wideo. W tym przewodniku Szybki start pokazano, jak ustawić ograniczenia wideo na początku wywołania i jak używać naszej setConstraints metody w obiekcie wywołania w celu dynamicznego ustawiania ograniczeń wideo podczas wywołania.

Wysyłanie ograniczeń wideo

Zestaw SDK połączeń sieci Web usług Azure Communication Services obsługuje ustawianie maksymalnej rozdzielczości wideo, szybkości klatek na ramce lub szybkości transmisji bitów wysyłanej przez klienta. Ograniczenia dotyczące wideo nadawcy są obsługiwane w przeglądarkach klasycznych (Chrome, Edge, Firefox) i w przypadku korzystania z przeglądarki mobilnej Safari dla systemu iOS lub przeglądarki mobilnej Android Chrome.

Obsługiwane ograniczenia
Przychodzące wideo: rozdzielczość
Wychodzące wideo: rozdzielczość, szybkość klatek, szybkość transmisji bitów

Ustawianie ograniczeń wideo na początku połączenia — wideo wychodzące (wyślij)

Ustawienie ograniczeń wideo jest implementowane w interfejsie Call . Aby użyć ograniczeń wideo, możesz określić ograniczenia z poziomu podczas CallOptions nawiązywania połączenia, akceptowania połączenia lub dołączania do połączenia. Należy określić localVideoStreams w pliku videoOptions.
Należy pamiętać, że ograniczenia nie działają, jeśli dołączysz połączenie tylko z opcją tylko audio i włącz aparat później. W takim przypadku można dynamicznie ustawiać ograniczenia wideo przy użyciu setConstraints metody w interfejsie Call .

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)

Typy ograniczeń wideo są opisane w następujący sposób:

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;
};

Podczas ustawiania ograniczeń wideo zestaw SDK wybiera najbliższą wartość, która mieści się w zestawie ograniczeń, aby zapobiec wartościom rozdzielczości, szybkości klatek i szybkości transmisji bitów, aby nie przekraczać maksymalnego zestawu wartości ograniczeń. Ponadto gdy wartość ograniczenia rozpoznawania jest za mała, zestaw SDK wybiera najmniejszą dostępną rozdzielczość. W takim przypadku wysokość wybranej rozdzielczości może być większa niż wartość ograniczenia.

Uwaga

Dla wszystkich bitrateparametrów frameHeight i frameRatewartość ograniczenia jest ograniczeniem max , co oznacza, że rzeczywista wartość wywołania może być określoną wartością lub mniejszą. Nie ma gwarancji, że wysłane rozwiązanie wideo pozostanie w określonej rozdzielczości.

Element frameHeight in VideoSendConstraints ma inne znaczenie, gdy urządzenie przenośne jest w trybie pionowym. W trybie pionowym ta wartość wskazuje krótszą stronę urządzenia. Na przykład określenie frameHeight.max wartości z wartością 240 na urządzeniu 1080(W) x 1920(H) w trybie pionowym, wysokość ograniczenia znajduje się po stronie 1080(W). Gdy to samo urządzenie jest w trybie poziomym (1920(W) x 1080(H)), ograniczenie znajduje się po stronie 1080(H).

Jeśli używasz interfejsu API MediaStats do śledzenia wysłanej rozdzielczości wideo, możesz dowiedzieć się, że wysłana rozdzielczość może ulec zmianie podczas wywołania. Może ona iść w górę i w dół, ale powinna być równa lub mniejsza niż określona wartość ograniczenia. Ta zmiana rozwiązania jest oczekiwanym zachowaniem. Przeglądarka ma również pewną regułę degradacji, aby dostosować wysyłanie rozdzielczości na podstawie procesora CPU lub warunków sieciowych.

Ustawianie ograniczeń wideo podczas połączenia — wideo wychodzące (wyślij)

Ograniczenia wideo można ustawić podczas wywołania przy użyciu setConstraints metody w Call obiekcie .

// 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
            }
        }
    }
});

Uwaga

Ustawienie wartości ograniczenia, tak jak 0 spowoduje anulowanie ustawienia poprzednio ustawionych ograniczeń. Możesz użyć tego sposobu, aby zresetować lub usunąć ograniczenia.


Odbieranie ograniczeń wideo

Aby kontrolować rozdzielczość po stronie odbiorcy przy użyciu zestawu SDK połączeń internetowych usług Azure Communication Services, możesz dostosować rozmiar renderatora tego klipu wideo. Zestaw SDK wywołujący automatycznie dostosowuje odebrane rozwiązanie na podstawie wymiarów modułu renderującego. Zestaw SDK nie zażąda przychodzącego strumienia wideo (szerokości i wysokości), który może zmieścić się w oknie wideo programu renderującego.

Używanie statycznych multimediów do zrozumienia wpływu ograniczeń wideo

Aby ocenić i porównać jakość wideo po zastosowaniu ograniczeń wideo, możesz uzyskać dostęp do interfejsu API MediaStats, aby uzyskać informacje o rozdzielczości i szybkości transmisji bitów strumienia wysyłania. Statystyki multimediów obejmują również inne szczegółowe statystyki związane ze strumieniami, takie jak zakłócenia, utrata pakietów, czas rundy itp.

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);
});

Następne kroki

Aby uzyskać więcej informacji, zobacz następujące artykuły: