Statystyki jakości multimediów
Aby lepiej zrozumieć jakość multimediów w usłudze VoIP i wywołaniach wideo korzystających z usług Azure Communication Services, istnieje funkcja nazywana statystykami jakości multimediów. Służy do analizowania metryk jakości niskiego poziomu audio, wideo i udostępniania ekranu dla metryk jakości połączeń przychodzących i wychodzących.
Statystyki jakości multimediów dotyczące trwającego połączenia
Ważne
Istnieje aktualizacja interfejsu dotycząca statystyk jakości multimediów w zestawie SDK, począwszy od zestawu SDK w wersji 1.20.1
Statystyki jakości multimediów to rozszerzona funkcja podstawowego Call
interfejsu API. Najpierw należy uzyskać obiekt interfejsu mediaStatsFeature
API:
const mediaStatsFeature = call.feature(Features.MediaStats);
Aby otrzymywać dane statystyczne multimediów, możesz subskrybować sampleReported
zdarzenie lub summaryReported
zdarzenie.
Zdarzenie sampleReported
jest wyzwalane co sekundę. Jest ona odpowiednia jako źródło danych do wyświetlania interfejsu użytkownika lub własnego potoku danych.
Zdarzenie summaryReported
zawiera zagregowane wartości danych w interwałach, co jest przydatne, gdy potrzebujesz tylko podsumowania.
Jeśli chcesz kontrolować interwał summaryReported
zdarzenia, musisz zdefiniować mediaStatsCollectorOptions
typ MediaStatsCollectorOptions
. W przeciwnym razie zestaw SDK używa wartości domyślnych.
const mediaStatsCollectorOptions: SDK.MediaStatsCollectorOptions = {
aggregationInterval: 10,
dataPointsPerAggregation: 6
};
const mediaStatsCollector = mediaStatsFeature.createCollector(mediaStatsSubscriptionOptions);
mediaStatsCollector.on('sampleReported', (sample) => {
console.log('media stats sample', sample);
});
mediaStatsCollector.on('summaryReported', (summary) => {
console.log('media stats summary', summary);
});
Jeśli nie musisz używać modułu zbierającego statystyki multimediów, możesz wywołać dispose
metodę mediaStatsCollector
.
mediaStatsCollector.dispose();
Nie musisz wywoływać dispose
metody mediaStatsCollector
za każdym razem, gdy kończy się wywołanie, ponieważ moduły zbierające są odzyskiwane wewnętrznie po zakończeniu wywołania.
MediaStatsCollectorOptions
Parametr MediaStatsCollectorOptions
jest opcjonalny i istnieją dwa opcjonalne pola w pliku MediaStatsCollectorOptions
.
aggregationInterval
to interwał w sekundach, w których statystyki są agregowane. Wartość domyślna to 10.dataPointsPerAggregation
określa liczbę punktów danych, które ma każde zdarzenie agregacji. Wartość domyślna to 6.
Te dwie wartości określają częstotliwość, z jaką zestaw SDK emituje summaryReported
zdarzenie i liczbę zagregowanych punktów danych zawartych w raporcie.
Zdarzenie summaryReported
zgłaszane co aggregationInterval * dataPointsPerAggregation
sekundy.
Jeśli na przykład ustawisz następujące wartości:
aggregationInterval
= 1dataPointsPerAggregation
= 60
Zdarzenie summaryReported
jest wywoływane co 60 sekund i zawiera 60 unikatowych jednostek dla każdej zarejestrowanej statystyki.
Jeśli ustawisz następujące wartości:
aggregatinInterval
= 60dataPointsPerAggregation
= 1
Zdarzenie summaryReported
jest wywoływane co 60 sekund i zawiera jedną (1) unikatową jednostkę dla każdej zarejestrowanej statystyki.
Najlepsze rozwiązania
Jeśli chcesz zebrać dane na potrzeby inspekcji offline, zalecamy zebranie danych i wysłanie ich do pozyskiwania potoku po zakończeniu wywołania. Jeśli przesyłasz dane podczas wywołania, może ona korzystać z przepustowości internetowej potrzebnej do kontynuowania wywołania usług Azure Communication Services (szczególnie wtedy, gdy dostępna przepustowość jest niska).
sampleReported
W przypadku zdarzenia lub summaryReported
zdarzenia dane statystyk multimediów nie są tylko prostym mapowaniem wartości klucz-wartość.
Oto deklaracja typu danych zdarzenia zgłoszonych przez sampleReported
zdarzenie.
export interface MediaStatsReportSample {
audio: {
send: OutgoingAudioMediaStats<number, string>[];
receive: IncomingAudioMediaStats<number, string>[];
};
video: {
send: OutgoingVideoMediaStats<number, string>[];
receive: IncomingVideoMediaStats<number, string>[];
};
screenShare: {
send: OutgoingScreenShareMediaStats<number, string>[];
receive: IncomingScreenShareMediaStats<number, string>[];
};
transports: TransportMediaStats<number>[];
}
Dane zdarzenia zawierają dane statystyczne dla każdego strumienia multimediów w wywołaniu, w tym zarówno wysyłanie, jak i odbieranie wskazówek.
Zalecamy wydrukowanie zdarzenia przy użyciu elementu , console.log
aby obserwować zmiany układu i wartości, aby można było znaleźć odpowiedni sposób wyświetlania lub przetwarzania danych zgodnie ze scenariuszem użycia.
Metryki wysyłania dźwięku
Nazwa metryki | opis | Komentarze |
---|---|---|
id |
Identyfikator statystyk | Służy do identyfikowania statystyk dotyczących zdarzeń, zwłaszcza gdy istnieje wiele statystyk o tym samym typie nośnika i kierunku zdarzenia. |
codecName |
Nazwa kodera | OPUS, G722. |
bitrate |
Szybkość wysyłania dźwięku (bity na sekundę) | Wartości ogólne znajdują się w zakresie 24 KB/s (typowe jest to 36–128 KB/s). |
jitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
packets |
Łączna liczba wysłanych pakietów. | |
packetsPerSecond |
Szybkość pakietów (pakiety na sekundę) | |
packetsLost |
Łączna liczba utraconych pakietów zgłoszonych ze zdalnego końca. | |
packetsLostPerSecond |
Współczynnik utraty pakietów (pakiety na sekundę) | Niższa jest lepsza. |
rttInMs |
Czas rundy (milisekundy) | Niższa jest lepsza. Obliczany na podstawie raportu odbiornika RTCP. Zalecamy czas rundy 200 ms lub mniej. |
audioInputLevel |
Poziom głośności dźwięku z mikrofonu | Wartości wahają się od 0 do 65536. Wartość 0 reprezentuje ciszę. |
transportId |
Identyfikator transportu | Służy do kojarzenia statystyk w transportach. |
Metryki odbierania dźwięku
W wersjach zestawu SDK starszych niż 1.20.1 jitterBufferDelayInMs
istniały jako jitterBufferInMs
.
Nazwa metryki | opis | Komentarze |
---|---|---|
id |
Identyfikator statystyk | Służy do identyfikowania statystyk dotyczących zdarzeń, zwłaszcza gdy istnieje wiele statystyk o tym samym typie nośnika i kierunku zdarzenia. |
codecName |
Nazwa kodera | OPUS, G722. |
bitrate |
Szybkość transmisji bitów odbierania dźwięku (bity na sekundę) | Wartości ogólne znajdują się w zakresie 24 KB/s (typowe jest to 36–128 KB/s). |
jitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
packets |
Całkowita liczba odebranych pakietów. | |
packetsPerSecond |
Szybkość pakietów (pakiety na sekundę) | |
packetsLost |
Łączna liczba utraconych pakietów. | |
packetsLostPerSecond |
Współczynnik utraty pakietów (pakiety na sekundę) | Niższa jest lepsza. |
jitterBufferDelayInMs |
Bufor roztrzasku (milisekundy) | Niższa jest lepsza. Bufor roztrzasku jest używany do płynnego odtwarzania. Ta wartość określa, jak długo pakiety próbek pozostają w buforze roztrzasku. |
audioOutputLevel |
Poziom głośności dźwięku ze strumienia odbierającego | Wartości wahają się od 0 do 65536. Wartość 0 reprezentuje ciszę. |
healedRatio |
Współczynnik ukrytych próbek (z wyjątkiem silentConcealedSamples ) do całkowitej liczby odebranych próbek |
Tylko informacje. |
transportId |
Identyfikator transportu | Służy do kojarzenia statystyk w transportach. |
Metryki wysyłania wideo
Począwszy od zestawu SDK w wersji 1.20.1, metryki wysyłania wideo zawierały altLayouts
pole metryki, które umożliwia lepszą reprezentację statystyk strumienia simulcast.
Nazwa metryki | opis | Komentarze |
---|---|---|
id |
Identyfikator statystyk | Służy do identyfikowania statystyk dotyczących zdarzeń, zwłaszcza gdy istnieje wiele statystyk o tym samym typie nośnika i kierunku zdarzenia. |
codecName |
Nazwa kodera | H264, VP8, VP9. |
bitrate |
Szybkość transmisji bitów wysyłania wideo (bity na sekundę) | |
jitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
packets |
Łączna liczba wysłanych pakietów. | |
packetsPerSecond |
Szybkość pakietów (pakiety na sekundę) | |
packetsLost |
Łączna liczba utraconych pakietów zgłoszonych ze zdalnego końca. | |
packetsLostPerSecond |
Współczynnik utraty pakietów (pakiety na sekundę) | Niższa jest lepsza. |
rttInMs |
Czas rundy (milisekundy) | Niższa jest lepsza. Obliczany na podstawie raportu odbiornika RTCP. Zalecamy czas rundy 200 ms lub mniej. |
frameRateInput |
Szybkość klatek pochodzących ze źródła wideo (ramki na sekundę) | |
frameWidthInput |
Szerokość ramki ostatniej ramki pochodzącej ze źródła wideo (pikseli) | |
frameHeightInput |
Wysokość ramki ostatniej ramki pochodzącej ze źródła wideo (pikseli) | |
framesEncoded |
Liczba ramek pomyślnie zakodowanych dla strumienia RTP. | |
frameRateEncoded |
Szybkość ramki została pomyślnie zakodowana dla strumienia RTP (ramki na sekundę) | |
framesSent |
Liczba ramek wysłanych do strumienia RTP | |
frameRateSent |
Szybkość klatek wysyłanych do strumienia RTP (ramki na sekundę) | |
frameWidthSent |
Szerokość ramy zakodowanej ramki (piksel) | |
frameHeightSent |
Wysokość ramki zakodowanej (piksel) | |
keyFramesEncoded |
Klatki zostały pomyślnie zakodowane dla strumienia RTP | |
transportId |
Identyfikator transportu | Służy do kojarzenia statystyk w transportach. |
altLayouts |
Strumienie Simulcast | altLayouts zawiera te same metryki do wysyłania wideo |
Metryki odbierania wideo
W wersjach zestawu SDK starszych niż 1.20.1 jitterBufferDelayInMs
istniały jako jitterBufferInMs
.
Nazwa metryki | opis | Komentarze |
---|---|---|
id |
Identyfikator statystyk | Służy do identyfikowania statystyk dotyczących zdarzeń, zwłaszcza gdy istnieje wiele statystyk o tym samym typie nośnika i kierunku zdarzenia. |
codecName |
Nazwa kodera | H264, VP8, VP9. |
bitrate |
Szybkość transmisji bitów odbierania wideo (bity na sekundę) | |
jitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
packets |
Całkowita liczba odebranych pakietów. | |
packetsPerSecond |
Szybkość pakietów (pakiety na sekundę) | |
packetsLost |
Łączna liczba utraconych pakietów. | |
packetsLostPerSecond |
Współczynnik utraty pakietów (pakiety na sekundę) | Niższa jest lepsza. |
rttInMs |
Czas rundy (milisekundy) | Niższa jest lepsza. Obliczany na podstawie raportu nadawcy RTCP. Zalecamy czas rundy 200 ms lub mniej. |
streamId |
Identyfikator strumienia | Wartość odpowiada wartości w elem streamId VideoStreamCommon .id Może służyć do dopasowania nadawcy. |
jitterBufferDelayInMs |
Bufor roztrzasku (milisekundy) | Niższa jest lepsza. Bufor roztrzasku jest używany do płynnego odtwarzania. Ta wartość określa, jak długo pakiety ramek pozostają w buforze roztrzasku. |
frameRateDecoded |
Szybkość klatek poprawnie zdekodowana dla strumienia RTP (ramki na sekundę) | |
frameRateReceived |
Szybkość klatek odebranych w strumieniu RTP (ramki na sekundę) | |
frameWidthReceived |
Szerokość ramki zdekodowanej (piksel) | |
frameHeightReceived |
Wysokość ramki zdekodowanej (piksel) | |
longestFreezeDurationInMs |
Najdłuższy czas trwania zamrożenia (milisekundy) | |
totalFreezeDurationInMs |
Całkowity czas trwania zamrożenia (milisekundy) | |
framesReceived |
Łączna liczba ramek odebranych w strumieniu RTP | |
framesDecoded |
Całkowita liczba ramek poprawnie zdekodowanych dla strumienia RTP | |
framesDropped |
Całkowita liczba porzuconych ramek | |
keyFramesDecoded |
Całkowita liczba klatek kluczowych poprawnie zdekodowanych dla strumienia RTP | |
transportId |
Identyfikator transportu | Służy do kojarzenia statystyk w transportach. |
Metryki wysyłania udziału ekranu
Obecnie pola statystyk są takie same jak metryki wysyłania wideo.
Metryki odbierania udziału ekranu
Obecnie pola statystyk są takie same jak metryki odbierania wideo.
Metryki transportu
Metryki związane z transportem zostały oddzielone po zestawie SDK sieci Web ACS 1.20.1.
We wcześniejszych wersjach istniały tak jak pairRttInMs
w statystykach rttInMs
dotyczących audio, wideo i screenShare.
availableIncomingBitrate
był availableBitrate
w statystykach odbierania audio, wideo i screenShare.
availableOutgoingBitrate
był availableBitrate
w statystykach wysyłania audio, wideo i screenShare.
Nazwa metryki | opis | Komentarze |
---|---|---|
id |
Identyfikator transportu | Służy do kojarzenia z identyfikatorem transportId w innych statystykach |
rttInMs |
Czas rundy (milisekundy) | Wartość jest obliczana na podstawie sprawdzania łączności STUN. Zalecamy czas rundy 200 ms lub mniej. |
availableIncomingBitrate |
Szacowanie przepustowości (bity na sekundę) | Wartość może być niedostępna w zależności od algorytmu szacowania przepustowości używanego w sesji WebRTC |
availableOutgoingBitrate |
Szacowanie przepustowości (bity na sekundę) | Wartość może być niedostępna w zależności od algorytmu szacowania przepustowości używanego w sesji WebRTC |
Co się zmieniło w zestawie SDK w wersji 1.20.1 (OGÓLNA dostępność)
Teraz obsługujemy interfejs API funkcji MediaStats w wersji 1.20.1 (GA).
W porównaniu z poprzednimi wersjami beta wprowadziliśmy również drobne zmiany interfejsu API w tej wersji ogólnie dostępnej.
W poprzednich wersjach beta , zostały uwzględnione w statystykach pairRttInMs
availableBitrate
audio, wideo i screenShare. Teraz te metryki są rozdzielone na metryki transportu.
Wprowadziliśmy packets
pola metryk i packetsLost
audio, wideo, screenShare statistics. Te metryki są przydatne do obliczania całkowitej liczby pakietów wysłanych lub odebranych między dwoma różnymi punktami czasu.
Statystyki frameRateOutput
in video i screenShare są usuwane. Zamiast tego możesz użyć frameRateDecoded
polecenia .
Nazwa pola jitterBufferInMs
metryki została zmieniona na , aby jitterBufferDelayInMs
zapewnić jaśniejszy opis, ponieważ ta metryka wskazuje czas trwania pozostanenia pakietu w buforze roztrzasku.
Statystyki jakości multimediów dotyczące trwającego połączenia
Statystyki jakości multimediów to rozszerzona funkcja podstawowego Call
interfejsu API. Najpierw należy uzyskać obiekt interfejsu MediaStatisticsCallFeature
API:
MediaStatisticsCallFeature mediaStatisticsCallFeature = call.feature(Features.MEDIA_STATISTICS);
Obiekt MediaStatisticsCallFeature
ma następującą strukturę interfejsu API:
- Zdarzenie
OnReportReceivedListener
nasłuchuje okresowych raportów statystyk multimedialnych. getReportIntervalInSeconds
pobiera interwał (w sekundach) generowania raportu statystyk multimediów. Zestaw SDK używa10
sekundy jako domyślnej.updateReportIntervalInSeconds()
aktualizuje interwał (w sekundach) generowania raportu statystyk multimediów. Zestaw SDK używa10
sekundy jako domyślnej.- Element
MediaStatisticsReport
zawiera definicję statystyk wychodzących i przychodzących multimediów, skategoryzowanych przez udział audio, wideo i ekranu.getOutgoingStatistics()
: lista statystyk multimedialnych dla nośników wychodzących.getAudioStatistics()
: lista statystyk multimediów dla wychodzącego dźwięku.getVideoStatistics()
: lista statystyk multimediów dla wychodzącego wideo.getScreenShareStatistics()
: lista statystyk multimedialnych dla wychodzącego udziału ekranu.getDataChannelStatistics()
: lista statystyk multimedialnych dla kanału danych.
getIncomingStatistics()
: lista statystyk multimedialnych dla nośników przychodzących.getAudioStatistics()
: lista statystyk multimedialnych dla przychodzącego dźwięku.getVideoStatistics()
: lista statystyk multimediów dla przychodzącego wideo.getScreenShareStatistics()
: lista statystyk multimediów dla przychodzącego udziału ekranu.getDataChannelStatistics()
: lista statystyk multimedialnych dla kanału danych.
getLastUpdatedAt()
: data wygenerowania raportu.
Następnie zasubskrybuj addOnReportReceivedListener
zdarzenie, aby otrzymywać regularne aktualizacje dotyczące bieżących statystyk jakości multimediów:
mediaStatisticsCallFeature.addOnReportReceivedListener(handleReportReceivedListener);
// Optionally, set the interval for media statistics report generation
mediaStatisticsCallFeature.updateReportIntervalInSeconds(15);
private void handleReportReceivedListener(MediaStatisticssReportEvent args) {
// Obtain the media statistics report instance
MediaStatisticsReport report = args.getReport();
// Obtain the outgoing media statistics for audio
List<OutgoingAudioStatistics> outgoingAudioStatistics = report.getOutgoingStatistics().getAudioStatistics();
// Obtain the outgoing media statistics for video
List<OutgoingVideoStatistics> outgoingVideoStatistics = report.getOutgoingStatistics().getVideoStatistics();
// Obtain the outgoing media statistics for screen share
List<OutgoingScreenShareStatistics> outgoingScreenShareStatistics = report.getOutgoingStatistics().getScreenShareStatistics();
// Obtain the outgoing media statistics for data channel
List<OutgoingDataChannelStatistics> outgoingDataChannelStatistics = report.getOutgoingStatistics().getDataChannelStatistics();
// Obtain the incoming media statistics for audio
List<IncomingAudioStatistics> incomingAudioStatistics = report.getIncomingStatistics().getAudioStatistics();
// Obtain the incoming media statistics for video
List<IncomingVideoStatistics> incomingVideoStatistics = report.getIncomingStatistics().getVideoStatistics();
// Obtain the incoming media statistics for screen share
List<IncomingScreenShareStatistics> incomingScreenShareStatistics = report.getIncomingStatistics().getScreenShareStatistics();
// Obtain the incoming media statistics for data channel
List<IncomingDataChannelStatistics> incomingDataChannelStatistics = report.getIncomingStatistics().getDataChannelStatistics();
}
Najlepsze rozwiązania
Jeśli chcesz zebrać dane na potrzeby inspekcji offline, zalecamy zebranie danych i wysłanie ich do pozyskiwania potoku po zakończeniu wywołania. Jeśli przesyłasz dane podczas wywołania, może ona korzystać z przepustowości internetowej potrzebnej do kontynuowania wywołania usług Azure Communication Services (szczególnie wtedy, gdy dostępna przepustowość jest niska).
Metryki wychodzącego dźwięku
Nazwa metryki | opis | Komentarze |
---|---|---|
CodecName |
Nazwa kodera | |
BitrateInBps |
Szybkość transmisji bitów audio (bity na sekundę) | Wartości ogólne znajdują się w zakresie 24 KB/s (typowe jest to 36–128 KB/s). |
JitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
PacketCount |
Łączna liczba wysłanych pakietów. |
Przychodzące metryki audio
Nazwa metryki | opis | Komentarze |
---|---|---|
CodecName |
Nazwa kodera | |
JitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
PacketCount |
Łączna liczba wysłanych pakietów. | |
PacketsLostPerSecond |
Współczynnik utraty pakietów (pakiety na sekundę) | Niższa jest lepsza. |
Wychodzące metryki wideo
Nazwa metryki | opis | Komentarze |
---|---|---|
CodecName |
Nazwa kodera | |
BitrateInBps |
Szybkość transmisji bitów wysyłania wideo (bity na sekundę) | |
PacketCount |
Łączna liczba wysłanych pakietów. | |
FrameRate |
Szybkość klatek wysyłanych do strumienia RTP (ramki na sekundę) | |
FrameWidth |
Szerokość ramki zakodowanej (piksele) | |
FrameHeight |
Wysokość ramki zakodowanej (piksele) |
Przychodzące metryki wideo
Nazwa metryki | opis | Komentarze |
---|---|---|
CodecName |
Nazwa kodera | |
BitrateInBps |
Szybkość transmisji bitów odbierania wideo (bity na sekundę) | |
JitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
PacketCount |
Łączna liczba wysłanych pakietów. | |
PacketsLostPerSecond |
Współczynnik utraty pakietów (pakiety na sekundę) | Niższa jest lepsza. |
StreamId |
Identyfikator strumienia | Wartość streamId odpowiada identyfikatorowi filmu wideo uczestnika zdalnego. Może służyć do dopasowania nadawcy. |
FrameRate |
Szybkość klatek odebranych w strumieniu RTP (ramki na sekundę) | |
FrameWidth |
Szerokość ramki zdekodowanej (piksele) | |
FrameHeight |
Wysokość ramki zdekodowanej (piksele) | |
TotalFreezeDurationInMs |
Całkowity czas trwania zamrożenia (milisekundy) |
Metryki udostępniania ekranu wychodzącego
Obecnie pola statystyk są takie same jak metryki wideo wychodzące.
Metryki udziału ekranu przychodzącego
Obecnie pola statystyk są takie same jak przychodzące metryki wideo.
Metryki kanału danych wychodzących
Nazwa metryki | opis | Komentarze |
---|---|---|
PacketCount |
Łączna liczba wysłanych pakietów. |
Metryki kanału danych przychodzących
Nazwa metryki | opis | Komentarze |
---|---|---|
JitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
PacketCount |
Łączna liczba wysłanych pakietów. |
Statystyki jakości multimediów dotyczące trwającego połączenia
Statystyki jakości multimediów to rozszerzona funkcja podstawowego Call
interfejsu API. Najpierw należy uzyskać obiekt interfejsu mediaStatisticsCallFeature
API:
var mediaStatisticsCallFeature = self.call.feature(Features.mediaStatistics)
Obiekt mediaStatisticsCallFeature
ma następującą strukturę interfejsu API:
- Metoda
didReceiveReport
delegata nasłuchuje okresowych raportów statystyk multimedialnych. reportIntervalInSeconds
pobiera interwał (w sekundach) generowania raportu statystyk multimediów. Zestaw SDK używa10
sekundy jako domyślnej.updateReportInterval(inSeconds)
aktualizuje interwał (w sekundach) generowania raportu statystyk multimediów. Zestaw SDK używa10
sekundy jako domyślnej.- Obiekt
MediaStatisticsReport
zawiera definicję statystyk wychodzących i przychodzących multimediów, skategoryzowanych według udziału audio, wideo i ekranu.outgoingMediaStatistics
: lista statystyk multimedialnych dla nośników wychodzących.audio
: lista statystyk multimediów dla wychodzącego dźwięku.video
: lista statystyk multimedialnych dla wychodzącego wideo.screenShare
: lista statystyk multimedialnych dla udziału ekranu wychodzącego.dataChannel
: lista statystyk multimedialnych dla wychodzącego kanału danych.
incomingMediaStatistics
: lista statystyk multimedialnych dla nośników przychodzących.audio
: lista statystyk multimedialnych dla przychodzącego dźwięku.video
: lista statystyk multimediów dla przychodzącego wideo.screenShare
: lista statystyk multimedialnych dla przychodzącego udziału ekranu.dataChannel
: lista statystyk multimedialnych dla przychodzącego kanału danych.
lastUpdated
: data wygenerowania raportu.
Następnie zaimplementuj delegata didReceiveReport
, aby uzyskać regularne aktualizacje dotyczące bieżących statystyk jakości multimediów:
// Optionally, set the interval for media statistics report generation
mediaStatisticsCallFeature.updateReportInterval(inSeconds: 15)
mediaStatisticsCallFeature.delegate = MediaStatisticsDelegate()
public class MediaStatisticsDelegate : MediaStatisticsCallFeatureDelegate
{
public func mediaStatisticsCallFeature(_ mediaStatisticsCallFeature: MediaStatisticsCallFeature,
didReceiveReport args: MediaStatisticsReportReceivedEventArgs) {
let report = args.report
// Obtain the outgoing media statistics for audio
let outgoingAudioStatistics = report.outgoingStatistics.audio
// Obtain the outgoing media statistics for video
let outgoingVideoStatistics = report.outgoingStatistics.video
// Obtain the outgoing media statistics for screen share
let outgoingScreenShareStatistics = report.outgoingStatistics.screenShare
// Obtain the outgoing media statistics for data channel
let outgoingDataChannelStatistics = report.outgoingStatistics.dataChannel
// Obtain the incoming media statistics for audio
let incomingAudioStatistics = report.incomingStatistics.audio
// Obtain the incoming media statistics for video
let incomingVideoStatistics = report.incomingStatistics.video
// Obtain the incoming media statistics for screen share
let incomingScreenShareStatistics = report.incomingStatistics.screenShare
// Obtain the incoming media statistics for data channel
let incomingDataChannelStatistics = report.incomingStatistics.dataChannel
}
}
Najlepsze rozwiązania
Jeśli chcesz zebrać dane na potrzeby inspekcji offline, zalecamy zebranie danych i wysłanie ich do pozyskiwania potoku po zakończeniu wywołania. Jeśli przesyłasz dane podczas wywołania, może ona korzystać z przepustowości internetowej potrzebnej do kontynuowania wywołania usług Azure Communication Services (szczególnie wtedy, gdy dostępna przepustowość jest niska).
Metryki wychodzącego dźwięku
Nazwa metryki | opis | Komentarze |
---|---|---|
CodecName |
Nazwa kodera | |
BitrateInBps |
Szybkość transmisji bitów audio (bity na sekundę) | Wartości ogólne znajdują się w zakresie 24 KB/s (typowe jest to 36–128 KB/s). |
JitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
PacketCount |
Łączna liczba wysłanych pakietów. |
Przychodzące metryki audio
Nazwa metryki | opis | Komentarze |
---|---|---|
CodecName |
Nazwa kodera | |
JitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
PacketCount |
Łączna liczba wysłanych pakietów. | |
PacketsLostPerSecond |
Współczynnik utraty pakietów (pakiety na sekundę) | Niższa jest lepsza. |
Wychodzące metryki wideo
Nazwa metryki | opis | Komentarze |
---|---|---|
CodecName |
Nazwa kodera | |
BitrateInBps |
Szybkość transmisji bitów wysyłania wideo (bity na sekundę) | |
PacketCount |
Łączna liczba wysłanych pakietów. | |
FrameRate |
Szybkość klatek wysyłanych do strumienia RTP (ramki na sekundę) | |
FrameWidth |
Szerokość ramki zakodowanej (piksele) | |
FrameHeight |
Wysokość ramki zakodowanej (piksele) |
Przychodzące metryki wideo
Nazwa metryki | opis | Komentarze |
---|---|---|
CodecName |
Nazwa kodera | |
BitrateInBps |
Szybkość transmisji bitów odbierania wideo (bity na sekundę) | |
JitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
PacketCount |
Łączna liczba wysłanych pakietów. | |
PacketsLostPerSecond |
Współczynnik utraty pakietów (pakiety na sekundę) | Niższa jest lepsza. |
StreamId |
Identyfikator strumienia | Wartość streamId odpowiada identyfikatorowi filmu wideo uczestnika zdalnego. Może służyć do dopasowania nadawcy. |
FrameRate |
Szybkość klatek odebranych w strumieniu RTP (ramki na sekundę) | |
FrameWidth |
Szerokość ramki zdekodowanej (piksele) | |
FrameHeight |
Wysokość ramki zdekodowanej (piksele) | |
TotalFreezeDurationInMs |
Całkowity czas trwania zamrożenia (milisekundy) |
Metryki udostępniania ekranu wychodzącego
Obecnie pola statystyk są takie same jak metryki wideo wychodzące.
Metryki udziału ekranu przychodzącego
Obecnie pola statystyk są takie same jak przychodzące metryki wideo.
Metryki kanału danych wychodzących
Nazwa metryki | opis | Komentarze |
---|---|---|
PacketCount |
Łączna liczba wysłanych pakietów. |
Metryki kanału danych przychodzących
Nazwa metryki | opis | Komentarze |
---|---|---|
JitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
PacketCount |
Łączna liczba wysłanych pakietów. |
Statystyki jakości multimediów dotyczące trwającego połączenia
Statystyki jakości multimediów to rozszerzona funkcja podstawowego CommunicationCall
interfejsu API. Najpierw należy uzyskać obiekt interfejsu MediaStatisticsCallFeature
API:
MediaStatisticsCallFeature mediaStatisticsCallFeature = call.Features.MediaStatistics;
Obiekt MediaStatisticsCallFeature
funkcji ma następującą strukturę interfejsu API:
- Zdarzenie
ReportReceived
nasłuchuje okresowych raportów statystyk multimedialnych. ReportIntervalInSeconds
pobiera interwał (w sekundach) generowania raportu statystyk multimediów. Zestaw SDK używa10
sekundy jako domyślnej.UpdateReportIntervalInSeconds()
aktualizuje interwał (w sekundach) generowania raportu statystyk multimediów. Zestaw SDK używa10
sekundy jako domyślnej.- Obiekt
MediaStatisticsReport
zawiera definicję statystyk wychodzących i przychodzących multimediów, skategoryzowanych według udziału audio, wideo i ekranu.OutgoingMediaStatistics
: lista statystyk multimedialnych dla nośników wychodzących.Audio
: lista statystyk multimediów dla wychodzącego dźwięku.Video
: lista statystyk multimedialnych dla wychodzącego wideo.ScreenShare
: lista statystyk multimedialnych dla udziału ekranu wychodzącego.DataChannel
: lista statystyk multimedialnych dla wychodzącego kanału danych.
IncomingMediaStatistics
: lista statystyk multimedialnych dla nośników przychodzących.Audio
: lista statystyk multimedialnych dla przychodzącego dźwięku.Video
: lista statystyk multimediów dla przychodzącego wideo.ScreenShare
: lista statystyk multimedialnych dla przychodzącego udziału ekranu.DataChannel
: lista statystyk multimedialnych dla przychodzącego kanału danych.
LastUpdateAt
: data wygenerowania raportu.
Następnie zasubskrybuj SampleReported
zdarzenie, aby otrzymywać regularne aktualizacje dotyczące bieżących statystyk jakości multimediów:
mediaStatisticsCallFeature.ReportReceived += MediaStatisticsCallFeature_ReportReceived;
// Optionally, set the interval for media statistics report generation
mediaStatisticsCallFeature.UpdateReportIntervalInSeconds(15);
private void MediaStatisticsCallFeature_ReportReceived(object sender, MediaStatisticsReportReceivedEventArgs args)
// Obtain the media statistics report instance
MediaStatisticsReport report = args.Report;
// Obtain the outgoing media statistics for audio
IReadOnlyList<OutgoingAudioStatistics> outgoingAudioStatistics = report.OutgoingStatistics.Audio;
// Obtain the outgoing media statistics for video
IReadOnlyList<OutgoingVideoStatistics> outgoingVideoStatistics = report.OutgoingStatistics.Video;
// Obtain the outgoing media statistics for screen share
IReadOnlyList<OutgoingScreenShareStatistics> outgoingScreenShareStatistics = report.OutgoingStatistics.ScreenShare;
// Obtain the outgoing media statistics for data channel
IReadOnlyList<OutgoingDataChannelStatistics> outgoingDataChannelStatistics = report.OutgoingStatistics.DataChannel;
// Obtain the incoming media statistics for audio
IReadOnlyList<IncomingAudioStatistics> incomingAudioStatistics = report.IncomingStatistics.Audio;
// Obtain the incoming media statistics for video
IReadOnlyList<IncomingVideoStatistics> incomingVideoStatistics = report.IncomingStatistics.Video;
// Obtain the incoming media statistics for screen share
IReadOnlyList<IncomingScreenShareStatistics> incomingScreenShareStatistics = report.IncomingStatistics.ScreenShare;
// Obtain the incoming media statistics for data channel
IReadOnlyList<IncomingDataChannelStatistics> incomingDataChannelStatistics = report.IncomingStatistics.DataChannel;
}
Najlepsze rozwiązania
Jeśli chcesz zebrać dane na potrzeby inspekcji offline, zalecamy zebranie danych i wysłanie ich do pozyskiwania potoku po zakończeniu wywołania. Jeśli przesyłasz dane podczas wywołania, może ona korzystać z przepustowości internetowej potrzebnej do kontynuowania wywołania usług Azure Communication Services (szczególnie wtedy, gdy dostępna przepustowość jest niska).
Metryki wychodzącego dźwięku
Nazwa metryki | opis | Komentarze |
---|---|---|
CodecName |
Nazwa kodera | |
BitrateInBps |
Szybkość transmisji bitów audio (bity na sekundę) | Wartości ogólne znajdują się w zakresie 24 KB/s (typowe jest to 36–128 KB/s). |
JitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
PacketCount |
Łączna liczba wysłanych pakietów. |
Przychodzące metryki audio
Nazwa metryki | opis | Komentarze |
---|---|---|
CodecName |
Nazwa kodera | |
JitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
PacketCount |
Łączna liczba wysłanych pakietów. | |
PacketsLostPerSecond |
Współczynnik utraty pakietów (pakiety na sekundę) | Niższa jest lepsza. |
Wychodzące metryki wideo
Nazwa metryki | opis | Komentarze |
---|---|---|
CodecName |
Nazwa kodera | |
BitrateInBps |
Szybkość transmisji bitów wysyłania wideo (bity na sekundę) | |
PacketCount |
Łączna liczba wysłanych pakietów. | |
FrameRate |
Szybkość klatek wysyłanych do strumienia RTP (ramki na sekundę) | |
FrameWidth |
Szerokość ramki zakodowanej (piksele) | |
FrameHeight |
Wysokość ramki zakodowanej (piksele) |
Przychodzące metryki wideo
Nazwa metryki | opis | Komentarze |
---|---|---|
CodecName |
Nazwa kodera | |
BitrateInBps |
Szybkość transmisji bitów odbierania wideo (bity na sekundę) | |
JitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
PacketCount |
Łączna liczba wysłanych pakietów. | |
PacketsLostPerSecond |
Współczynnik utraty pakietów (pakiety na sekundę) | Niższa jest lepsza. |
StreamId |
Identyfikator strumienia | Wartość streamId odpowiada identyfikatorowi filmu wideo uczestnika zdalnego. Może służyć do dopasowania nadawcy. |
FrameRate |
Szybkość klatek odebranych w strumieniu RTP (ramki na sekundę) | |
FrameWidth |
Szerokość ramki zdekodowanej (piksele) | |
FrameHeight |
Wysokość ramki zdekodowanej (piksele) | |
TotalFreezeDurationInMs |
Całkowity czas trwania zamrożenia (milisekundy) |
Metryki udostępniania ekranu wychodzącego
Obecnie pola statystyk są takie same jak metryki wideo wychodzące.
Metryki udziału ekranu przychodzącego
Obecnie pola statystyk są takie same jak przychodzące metryki wideo.
Metryki kanału danych wychodzących
Nazwa metryki | opis | Komentarze |
---|---|---|
PacketCount |
Łączna liczba wysłanych pakietów. |
Metryki kanału danych przychodzących
Nazwa metryki | opis | Komentarze |
---|---|---|
JitterInMs |
Zakłócenia pakietów (milisekundy) | Niższa jest lepsza. |
PacketCount |
Łączna liczba wysłanych pakietów. |