Statistieken over mediakwaliteit
Voor een beter begrip van de mediakwaliteit in VoIP- en videogesprekken die gebruikmaken van Azure Communication Services, is er een functie die mediakwaliteitsstatistieken wordt genoemd. Gebruik deze om de metrische gegevens over de kwaliteit van audio, video en schermdeling te onderzoeken voor metrische gegevens over binnenkomende en uitgaande gesprekken.
Statistieken over mediakwaliteit voor een doorlopend gesprek
Belangrijk
Er is een interface-update voor statistieken over mediakwaliteit in de SDK, te beginnen met sdk-versie 1.20.1
Statistieken over mediakwaliteit is een uitgebreide functie van de kern-API Call
. U moet eerst het mediaStatsFeature
API-object verkrijgen:
const mediaStatsFeature = call.feature(Features.MediaStats);
Als u de mediastatistiekengegevens wilt ontvangen, kunt u zich abonneren op de sampleReported
gebeurtenis of de summaryReported
gebeurtenis.
De sampleReported
gebeurtenis wordt elke seconde geactiveerd. Het is geschikt als een gegevensbron voor weergave van de gebruikersinterface of uw eigen gegevenspijplijn.
De summaryReported
gebeurtenis bevat de geaggregeerde waarden van de gegevens met intervallen, wat handig is wanneer u alleen een samenvatting nodig hebt.
Als u controle wilt over het interval van de summaryReported
gebeurtenis, moet u het type MediaStatsCollectorOptions
definiërenmediaStatsCollectorOptions
. Anders gebruikt de SDK standaardwaarden.
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);
});
Als u de mediastatistiekenverzamelaar niet hoeft te gebruiken, kunt u de methode aanroependispose
.mediaStatsCollector
mediaStatsCollector.dispose();
U hoeft geen methode aan te roepen dispose
wanneer mediaStatsCollector
de aanroep eindigt, omdat de collectors intern worden vrijgemaakt wanneer de aanroep eindigt.
MediaStatsCollectorOptions
De MediaStatsCollectorOptions
optie is optioneel en er zijn twee optionele velden in MediaStatsCollectorOptions
.
aggregationInterval
is het interval, in seconden, dat de statistieken worden geaggregeerd. De standaardwaarde is 10.dataPointsPerAggregation
definieert hoeveel gegevenspunten elke aggregatiegebeurtenis heeft. De standaardwaarde is 6.
Deze twee waarden bepalen de frequentie waarmee de SDK gebeurtenis verzendt summaryReported
en het aantal geaggregeerde gegevenspunten dat in het rapport is opgenomen.
De summaryReported
gebeurtenis is elke aggregationInterval * dataPointsPerAggregation
seconden gegenereerd.
Als u bijvoorbeeld de volgende waarden instelt:
aggregationInterval
= 1dataPointsPerAggregation
= 60
De summaryReported
gebeurtenis wordt elke 60 seconden gegenereerd en bevat 60 unieke eenheden voor elke opgenomen statistiek.
Als u de volgende waarden instelt:
aggregatinInterval
= 60dataPointsPerAggregation
= 1
De summaryReported
gebeurtenis wordt elke 60 seconden gegenereerd en bevat één (1) unieke eenheid voor elke opgenomen statistiek.
Aanbevolen procedures
Als u de gegevens voor offline inspectie wilt verzamelen, raden we u aan de gegevens te verzamelen en deze naar uw pijplijnopname te verzenden nadat uw oproep is beëindigd. Als u de gegevens verzendt tijdens een oproep, kan deze internetbandbreedte gebruiken die nodig is om een Azure Communication Services-aanroep voort te zetten (met name wanneer de beschikbare bandbreedte laag is).
In een sampleReported
gebeurtenis of summaryReported
gebeurtenis zijn de mediastatistiekengegevens niet alleen een eenvoudige sleutelwaardetoewijzing.
Dit is de typedeclaratie van de gebeurtenisgegevens die door sampleReported
de gebeurtenis zijn gerapporteerd.
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>[];
}
De gebeurtenisgegevens bieden de statistiekengegevens voor elke mediastream in het gesprek, inclusief zowel verzend- als ontvangstbeschrijvingen.
We raden u aan de gebeurtenis af te drukken met behulp van de gebeurtenis om de wijzigingen in de console.log
indeling en waarde te observeren, zodat u de gegevens op de juiste manier kunt weergeven of verwerken volgens uw gebruiksscenario.
Metrische gegevens voor audio verzenden
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
id |
Statistieken-id | Wordt gebruikt om statistieken voor de gebeurtenissen te identificeren, met name wanneer er meerdere statistieken zijn met hetzelfde mediatype en dezelfde richting in een gebeurtenis. |
codecName |
Codecnaam | OPUS, G722. |
bitrate |
Bitsnelheid audio verzenden (bits per seconde) | Algemene waarden bevinden zich in het bereik van 24-Kbs (36-128Kbs is typisch). |
jitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
packets |
Het totale aantal verzonden pakketten. | |
packetsPerSecond |
Pakketsnelheid (pakketten per seconde) | |
packetsLost |
Het totale aantal verloren pakketten dat is gerapporteerd aan het externe einde. | |
packetsLostPerSecond |
Pakketverlies (pakketten per seconde) | Lager is beter. |
rttInMs |
Retourtijd (milliseconden) | Lager is beter. Berekend op basis van het RTCP-ontvangerrapport. We raden een retourtijd van 200 ms of minder aan. |
audioInputLevel |
Audiovolumeniveau van de microfoon | De waarde varieert van 0 tot 65536. Een waarde van 0 vertegenwoordigt stilte. |
transportId |
Transport-id | Wordt gebruikt om de statistieken in transporten te koppelen. |
Metrische gegevens ontvangen van audio
In de SDK-versies ouder dan 1.20.1 bestonden jitterBufferDelayInMs
als jitterBufferInMs
.
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
id |
Statistieken-id | Wordt gebruikt om statistieken voor de gebeurtenissen te identificeren, met name wanneer er meerdere statistieken zijn met hetzelfde mediatype en dezelfde richting in een gebeurtenis. |
codecName |
Codecnaam | OPUS, G722. |
bitrate |
Bitrate audio ontvangen (bits per seconde) | Algemene waarden bevinden zich in het bereik van 24-Kbs (36-128Kbs is typisch). |
jitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
packets |
Het totale aantal ontvangen pakketten. | |
packetsPerSecond |
Pakketsnelheid (pakketten per seconde) | |
packetsLost |
Het totale aantal verloren pakketten. | |
packetsLostPerSecond |
Pakketverlies (pakketten per seconde) | Lager is beter. |
jitterBufferDelayInMs |
Jitter-buffer (milliseconden) | Lager is beter. De jitterbuffer wordt gebruikt voor een soepele play-out. Deze waarde is hoe lang de pakketten van de monsters in de jitter-buffer blijven. |
audioOutputLevel |
Audiovolumeniveau van de ontvangende stream | De waarde varieert van 0 tot 65536. Een waarde van 0 vertegenwoordigt stilte. |
healedRatio |
Verhouding van verborgen monsters (behalve silentConcealedSamples ) tot totaal ontvangen monsters |
Alleen informatie. |
transportId |
Transport-id | Wordt gebruikt om de statistieken in transporten te koppelen. |
Metrische gegevens verzenden via video
Vanaf SDK-versie 1.20.1 bevatten de video metrische gegevens het altLayouts
metrische veld, waarmee een betere weergave van simulcaststroomstatistieken mogelijk is.
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
id |
Statistieken-id | Wordt gebruikt om statistieken voor de gebeurtenissen te identificeren, met name wanneer er meerdere statistieken zijn met hetzelfde mediatype en dezelfde richting in een gebeurtenis. |
codecName |
Codecnaam | H264, VP8, VP9. |
bitrate |
Bitrate voor video verzenden (bits per seconde) | |
jitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
packets |
Het totale aantal verzonden pakketten. | |
packetsPerSecond |
Pakketsnelheid (pakketten per seconde) | |
packetsLost |
Het totale aantal verloren pakketten dat is gerapporteerd aan het externe einde. | |
packetsLostPerSecond |
Pakketverlies (pakketten per seconde) | Lager is beter. |
rttInMs |
Retourtijd (milliseconden) | Lager is beter. Berekend op basis van het RTCP-ontvangerrapport. We raden een retourtijd van 200 ms of minder aan. |
frameRateInput |
Framesnelheid die afkomstig is van de videobron (frames per seconde) | |
frameWidthInput |
Framebreedte van het laatste frame dat afkomstig is van de videobron (pixels) | |
frameHeightInput |
Framehoogte van het laatste frame dat afkomstig is van de videobron (pixels) | |
framesEncoded |
Het aantal frames dat is gecodeerd voor de RTP-stream. | |
frameRateEncoded |
Framesnelheid gecodeerd voor de RTP-stream (frames per seconde) | |
framesSent |
Het aantal frames dat wordt verzonden op de RTP-stream | |
frameRateSent |
Framesnelheid verzonden op de RTP-stream (frames per seconde) | |
frameWidthSent |
Framebreedte van het gecodeerde frame (pixel) | |
frameHeightSent |
Framehoogte van het gecodeerde frame (pixel) | |
keyFramesEncoded |
Sleutelframes gecodeerd voor de RTP-stream | |
transportId |
Transport-id | Wordt gebruikt om de statistieken in transporten te koppelen. |
altLayouts |
Simulcaststreams | altLayouts bevat dezelfde metrische gegevens voor het verzenden van video's |
Video ontvangt metrische gegevens
In de SDK-versies ouder dan 1.20.1 bestonden jitterBufferDelayInMs
als jitterBufferInMs
.
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
id |
Statistieken-id | Wordt gebruikt om statistieken voor de gebeurtenissen te identificeren, met name wanneer er meerdere statistieken zijn met hetzelfde mediatype en dezelfde richting in een gebeurtenis. |
codecName |
Codecnaam | H264, VP8, VP9. |
bitrate |
Bitrate voor video ontvangen (bits per seconde) | |
jitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
packets |
Het totale aantal ontvangen pakketten. | |
packetsPerSecond |
Pakketsnelheid (pakketten per seconde) | |
packetsLost |
Het totale aantal verloren pakketten. | |
packetsLostPerSecond |
Pakketverlies (pakketten per seconde) | Lager is beter. |
rttInMs |
Retourtijd (milliseconden) | Lager is beter. Berekend op basis van het RTCP-afzenderrapport. We raden een retourtijd van 200 ms of minder aan. |
streamId |
Stream-id | De streamId waarde komt overeen met id in VideoStreamCommon . Deze kan worden gebruikt om overeen te komen met de afzender. |
jitterBufferDelayInMs |
Jitter-buffer (milliseconden) | Lager is beter. De jitterbuffer wordt gebruikt voor een soepele play-out. Deze waarde is hoe lang de pakketten van de frames in de jitterbuffer blijven. |
frameRateDecoded |
Framesnelheid correct gedecodeerd voor de RTP-stream (frames per seconde) | |
frameRateReceived |
Framesnelheid ontvangen op de RTP-stream (frames per seconde) | |
frameWidthReceived |
Framebreedte van het gedecodeerde frame (pixel) | |
frameHeightReceived |
Framehoogte van het gedecodeerde frame (pixel) | |
longestFreezeDurationInMs |
Langste duur van blokkeren (milliseconden) | |
totalFreezeDurationInMs |
Totale duur van blokkeren (milliseconden) | |
framesReceived |
Totaal aantal frames dat is ontvangen in de RTP-stream | |
framesDecoded |
Totaal aantal frames dat correct is gedecodeerd voor de RTP-stream | |
framesDropped |
Totaal aantal frames verwijderd | |
keyFramesDecoded |
Totaal aantal sleutelframes correct gedecodeerd voor de RTP-stream | |
transportId |
Transport-id | Wordt gebruikt om de statistieken in transporten te koppelen. |
Metrische gegevens voor het verzenden van schermshares
Op dit moment zijn statistiekenvelden hetzelfde als metrische gegevens voor het verzenden van video's.
Schermshare ontvangt metrische gegevens
Op dit moment zijn statistiekenvelden hetzelfde als het ontvangen van metrische gegevens voor video's.
Metrische transportgegevens
De transportgerelateerde metrische gegevens zijn gescheiden na ACS Web SDK 1.20.1.
In eerdere versies rttInMs
bestonden zoals pairRttInMs
in de statistieken voor audio, video en screenShare.
availableIncomingBitrate
was availableBitrate
in de ontvangststatistieken voor audio, video en screenShare.
availableOutgoingBitrate
was availableBitrate
in de verzendstatistieken voor audio, video en screenShare.
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
id |
Transport-id | Wordt gebruikt om te koppelen aan de transportId in andere statistieken |
rttInMs |
Retourtijd (milliseconden) | De waarde wordt berekend op basis van de STUN-connectiviteitscontrole. We raden een retourtijd van 200 ms of minder aan. |
availableIncomingBitrate |
Schatting van bandbreedte (bits per seconde) | De waarde is mogelijk niet beschikbaar, afhankelijk van het algoritme voor bandbreedteschatting dat wordt gebruikt in de WebRTC-sessie |
availableOutgoingBitrate |
Schatting van bandbreedte (bits per seconde) | De waarde is mogelijk niet beschikbaar, afhankelijk van het algoritme voor bandbreedteschatting dat wordt gebruikt in de WebRTC-sessie |
Wat is er gewijzigd in SDK-versie 1.20.1 (GA)
We ondersteunen nu de MediaStats-functie-API in 1.20.1 (GA).
In vergelijking met de vorige bètaversies hebben we ook enkele kleine wijzigingen aangebracht in de API-interface in deze GA-versie.
In de vorige bètaversies pairRttInMs
availableBitrate
werden audio-, video- en screenShare-statistieken opgenomen. Deze metrische gegevens worden nu onderverdeeld in metrische transportgegevens.
We hebben metrische velden geïntroduceerd packets
in packetsLost
audio-, video-, screenShare-statistieken. Deze metrische gegevens zijn handig voor het berekenen van het totale aantal verzonden of ontvangen pakketten tussen twee verschillende tijdstippen.
De frameRateOutput
statistieken in video en screenShare worden verwijderd. U kunt in plaats daarvan gebruiken frameRateDecoded
.
De naam van het metrische veld jitterBufferInMs
wordt gewijzigd om een duidelijkere beschrijving te jitterBufferDelayInMs
geven, omdat deze metrische waarde de duur aangeeft van een pakket dat in de jitterbuffer blijft.
Statistieken over mediakwaliteit voor een doorlopend gesprek
Statistieken over mediakwaliteit is een uitgebreide functie van de kern-API Call
. U moet eerst het MediaStatisticsCallFeature
API-object verkrijgen:
MediaStatisticsCallFeature mediaStatisticsCallFeature = call.feature(Features.MEDIA_STATISTICS);
Het MediaStatisticsCallFeature
object heeft de volgende API-structuur:
- De
OnReportReceivedListener
gebeurtenis luistert naar periodieke rapporten van de mediastatistieken. getReportIntervalInSeconds
haalt het interval, in seconden, op van het genereren van het rapport voor mediastatistieken. De SDK gebruikt10
de tweede als standaardwaarde.updateReportIntervalInSeconds()
werkt het interval in seconden bij van het genereren van het rapport voor mediastatistieken. De SDK gebruikt10
de tweede als standaardwaarde.- A
MediaStatisticsReport
bevat de definitie van de statistieken van uitgaande en binnenkomende media, gecategoriseerd op audio, video en schermshare.getOutgoingStatistics()
: De lijst met mediastatistieken voor uitgaande media.getAudioStatistics()
: De lijst met mediastatistieken voor uitgaande audio.getVideoStatistics()
: De lijst met mediastatistieken voor uitgaande video.getScreenShareStatistics()
: De lijst met mediastatistieken voor uitgaande schermshare.getDataChannelStatistics()
: De lijst met mediastatistieken voor het gegevenskanaal.
getIncomingStatistics()
: De lijst met mediastatistieken voor inkomende media.getAudioStatistics()
: De lijst met mediastatistieken voor binnenkomende audio.getVideoStatistics()
: De lijst met mediastatistieken voor de inkomende video.getScreenShareStatistics()
: De lijst met mediastatistieken voor binnenkomende schermshare.getDataChannelStatistics()
: De lijst met mediastatistieken voor het gegevenskanaal.
getLastUpdatedAt()
: de datum waarop het rapport is gegenereerd.
Abonneer u vervolgens op de addOnReportReceivedListener
gebeurtenis om regelmatig updates te krijgen over de huidige statistieken over mediakwaliteit:
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();
}
Aanbevolen procedures
Als u de gegevens voor offline inspectie wilt verzamelen, raden we u aan de gegevens te verzamelen en deze naar uw pijplijnopname te verzenden nadat uw oproep is beëindigd. Als u de gegevens verzendt tijdens een oproep, kan deze internetbandbreedte gebruiken die nodig is om een Azure Communication Services-aanroep voort te zetten (met name wanneer de beschikbare bandbreedte laag is).
Metrische gegevens voor uitgaande audio
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
CodecName |
Codecnaam | |
BitrateInBps |
Bitrate audio verzenden (bits per seconde) | Algemene waarden bevinden zich in het bereik van 24-Kbs (36-128Kbs is typisch). |
JitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
PacketCount |
Het totale aantal verzonden pakketten. |
Metrische gegevens voor binnenkomende audio
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
CodecName |
Codecnaam | |
JitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
PacketCount |
Het totale aantal verzonden pakketten. | |
PacketsLostPerSecond |
Pakketverlies (pakketten per seconde) | Lager is beter. |
Metrische gegevens voor uitgaande video
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
CodecName |
Codecnaam | |
BitrateInBps |
Bitrate voor video verzenden (bits per seconde) | |
PacketCount |
Het totale aantal verzonden pakketten. | |
FrameRate |
Framesnelheid verzonden op de RTP-stream (frames per seconde) | |
FrameWidth |
Framebreedte van het gecodeerde frame (pixels) | |
FrameHeight |
Framehoogte van het gecodeerde frame (pixels) |
Metrische gegevens voor binnenkomende video
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
CodecName |
Codecnaam | |
BitrateInBps |
Bitrate voor video ontvangen (bits per seconde) | |
JitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
PacketCount |
Het totale aantal verzonden pakketten. | |
PacketsLostPerSecond |
Pakketverlies (pakketten per seconde) | Lager is beter. |
StreamId |
Stream-id | De streamId waarde komt overeen met de id van de video van de externe deelnemer. Deze kan worden gebruikt om overeen te komen met de afzender. |
FrameRate |
Framesnelheid ontvangen op de RTP-stream (frames per seconde) | |
FrameWidth |
Framebreedte van het gedecodeerde frame (pixels) | |
FrameHeight |
Framehoogte van het gedecodeerde frame (pixels) | |
TotalFreezeDurationInMs |
Totale duur van blokkeren (milliseconden) |
Metrische gegevens voor uitgaande schermshare
Momenteel zijn statistiekenvelden hetzelfde als metrische gegevens voor uitgaande video.
Metrische gegevens voor binnenkomende schermshare
Op dit moment zijn statistiekenvelden hetzelfde als metrische gegevens voor binnenkomende video' s.
Metrische gegevens over uitgaande gegevenskanalen
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
PacketCount |
Het totale aantal verzonden pakketten. |
Metrische gegevens van binnenkomende gegevenskanalen
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
JitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
PacketCount |
Het totale aantal verzonden pakketten. |
Statistieken over mediakwaliteit voor een doorlopend gesprek
Statistieken over mediakwaliteit is een uitgebreide functie van de kern-API Call
. U moet eerst het mediaStatisticsCallFeature
API-object verkrijgen:
var mediaStatisticsCallFeature = self.call.feature(Features.mediaStatistics)
Het mediaStatisticsCallFeature
object heeft de volgende API-structuur:
- De
didReceiveReport
gedelegeerde methode luistert naar periodieke rapporten van de mediastatistieken. reportIntervalInSeconds
haalt het interval, in seconden, op van het genereren van het rapport voor mediastatistieken. De SDK gebruikt10
de tweede als standaardwaarde.updateReportInterval(inSeconds)
werkt het interval in seconden bij van het genereren van het rapport voor mediastatistieken. De SDK gebruikt10
de tweede als standaardwaarde.- Een
MediaStatisticsReport
object bevat de definitie van de statistieken voor uitgaande en binnenkomende media, gecategoriseerd op audio, video en schermshare.outgoingMediaStatistics
: De lijst met mediastatistieken voor uitgaande media.audio
: De lijst met mediastatistieken voor de uitgaande audio.video
: De lijst met mediastatistieken voor de uitgaande video.screenShare
: De lijst met mediastatistieken voor de uitgaande schermshare.dataChannel
: De lijst met mediastatistieken voor het uitgaande gegevenskanaal.
incomingMediaStatistics
: De lijst met mediastatistieken voor inkomende media.audio
: De lijst met mediastatistieken voor de binnenkomende audio.video
: De lijst met mediastatistieken voor de inkomende video.screenShare
: De lijst met mediastatistieken voor de binnenkomende schermshare.dataChannel
: De lijst met mediastatistieken voor het binnenkomende gegevenskanaal.
lastUpdated
: de datum waarop het rapport is gegenereerd.
Implementeer vervolgens de didReceiveReport
gemachtigde om regelmatig updates te krijgen over de huidige statistieken over mediakwaliteit:
// 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
}
}
Aanbevolen procedures
Als u de gegevens voor offline inspectie wilt verzamelen, raden we u aan de gegevens te verzamelen en deze naar uw pijplijnopname te verzenden nadat uw oproep is beëindigd. Als u de gegevens verzendt tijdens een oproep, kan deze internetbandbreedte gebruiken die nodig is om een Azure Communication Services-aanroep voort te zetten (met name wanneer de beschikbare bandbreedte laag is).
Metrische gegevens voor uitgaande audio
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
CodecName |
Codecnaam | |
BitrateInBps |
Bitrate audio verzenden (bits per seconde) | Algemene waarden bevinden zich in het bereik van 24-Kbs (36-128Kbs is typisch). |
JitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
PacketCount |
Het totale aantal verzonden pakketten. |
Metrische gegevens voor binnenkomende audio
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
CodecName |
Codecnaam | |
JitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
PacketCount |
Het totale aantal verzonden pakketten. | |
PacketsLostPerSecond |
Pakketverlies (pakketten per seconde) | Lager is beter. |
Metrische gegevens voor uitgaande video
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
CodecName |
Codecnaam | |
BitrateInBps |
Bitrate voor video verzenden (bits per seconde) | |
PacketCount |
Het totale aantal verzonden pakketten. | |
FrameRate |
Framesnelheid verzonden op de RTP-stream (frames per seconde) | |
FrameWidth |
Framebreedte van het gecodeerde frame (pixels) | |
FrameHeight |
Framehoogte van het gecodeerde frame (pixels) |
Metrische gegevens voor binnenkomende video
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
CodecName |
Codecnaam | |
BitrateInBps |
Bitrate voor video ontvangen (bits per seconde) | |
JitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
PacketCount |
Het totale aantal verzonden pakketten. | |
PacketsLostPerSecond |
Pakketverlies (pakketten per seconde) | Lager is beter. |
StreamId |
Stream-id | De streamId waarde komt overeen met de id van de video van de externe deelnemer. Deze kan worden gebruikt om overeen te komen met de afzender. |
FrameRate |
Framesnelheid ontvangen op de RTP-stream (frames per seconde) | |
FrameWidth |
Framebreedte van het gedecodeerde frame (pixels) | |
FrameHeight |
Framehoogte van het gedecodeerde frame (pixels) | |
TotalFreezeDurationInMs |
Totale duur van blokkeren (milliseconden) |
Metrische gegevens voor uitgaande schermshare
Momenteel zijn statistiekenvelden hetzelfde als metrische gegevens voor uitgaande video.
Metrische gegevens voor binnenkomende schermshare
Op dit moment zijn statistiekenvelden hetzelfde als metrische gegevens voor binnenkomende video' s.
Metrische gegevens over uitgaande gegevenskanalen
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
PacketCount |
Het totale aantal verzonden pakketten. |
Metrische gegevens van binnenkomende gegevenskanalen
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
JitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
PacketCount |
Het totale aantal verzonden pakketten. |
Statistieken over mediakwaliteit voor een doorlopend gesprek
Statistieken over mediakwaliteit is een uitgebreide functie van de kern-API CommunicationCall
. U moet eerst het MediaStatisticsCallFeature
API-object verkrijgen:
MediaStatisticsCallFeature mediaStatisticsCallFeature = call.Features.MediaStatistics;
Het MediaStatisticsCallFeature
functieobject heeft de volgende API-structuur:
- De
ReportReceived
gebeurtenis luistert naar periodieke rapporten van de mediastatistieken. ReportIntervalInSeconds
haalt het interval, in seconden, op van het genereren van het rapport voor mediastatistieken. De SDK gebruikt10
de tweede als standaardwaarde.UpdateReportIntervalInSeconds()
werkt het interval in seconden bij van het genereren van het rapport voor mediastatistieken. De SDK gebruikt10
de tweede als standaardwaarde.- Een
MediaStatisticsReport
object bevat de definitie van de statistieken voor uitgaande en binnenkomende media, gecategoriseerd op audio, video en schermshare.OutgoingMediaStatistics
: De lijst met mediastatistieken voor uitgaande media.Audio
: De lijst met mediastatistieken voor de uitgaande audio.Video
: De lijst met mediastatistieken voor de uitgaande video.ScreenShare
: De lijst met mediastatistieken voor de uitgaande schermshare.DataChannel
: De lijst met mediastatistieken voor het uitgaande gegevenskanaal.
IncomingMediaStatistics
: De lijst met mediastatistieken voor inkomende media.Audio
: De lijst met mediastatistieken voor de binnenkomende audio.Video
: De lijst met mediastatistieken voor de inkomende video.ScreenShare
: De lijst met mediastatistieken voor de binnenkomende schermshare.DataChannel
: De lijst met mediastatistieken voor het binnenkomende gegevenskanaal.
LastUpdateAt
: de datum waarop het rapport is gegenereerd.
Abonneer u vervolgens op de SampleReported
gebeurtenis om regelmatig updates te krijgen over de huidige statistieken over mediakwaliteit:
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;
}
Aanbevolen procedures
Als u de gegevens voor offline inspectie wilt verzamelen, raden we u aan de gegevens te verzamelen en deze naar uw pijplijnopname te verzenden nadat uw oproep is beëindigd. Als u de gegevens verzendt tijdens een oproep, kan deze internetbandbreedte gebruiken die nodig is om een Azure Communication Services-aanroep voort te zetten (met name wanneer de beschikbare bandbreedte laag is).
Metrische gegevens voor uitgaande audio
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
CodecName |
Codecnaam | |
BitrateInBps |
Bitrate audio verzenden (bits per seconde) | Algemene waarden bevinden zich in het bereik van 24-Kbs (36-128Kbs is typisch). |
JitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
PacketCount |
Het totale aantal verzonden pakketten. |
Metrische gegevens voor binnenkomende audio
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
CodecName |
Codecnaam | |
JitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
PacketCount |
Het totale aantal verzonden pakketten. | |
PacketsLostPerSecond |
Pakketverlies (pakketten per seconde) | Lager is beter. |
Metrische gegevens voor uitgaande video
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
CodecName |
Codecnaam | |
BitrateInBps |
Bitrate voor video verzenden (bits per seconde) | |
PacketCount |
Het totale aantal verzonden pakketten. | |
FrameRate |
Framesnelheid verzonden op de RTP-stream (frames per seconde) | |
FrameWidth |
Framebreedte van het gecodeerde frame (pixels) | |
FrameHeight |
Framehoogte van het gecodeerde frame (pixels) |
Metrische gegevens voor binnenkomende video
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
CodecName |
Codecnaam | |
BitrateInBps |
Bitrate voor video ontvangen (bits per seconde) | |
JitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
PacketCount |
Het totale aantal verzonden pakketten. | |
PacketsLostPerSecond |
Pakketverlies (pakketten per seconde) | Lager is beter. |
StreamId |
Stream-id | De streamId waarde komt overeen met de id van de video van de externe deelnemer. Deze kan worden gebruikt om overeen te komen met de afzender. |
FrameRate |
Framesnelheid ontvangen op de RTP-stream (frames per seconde) | |
FrameWidth |
Framebreedte van het gedecodeerde frame (pixels) | |
FrameHeight |
Framehoogte van het gedecodeerde frame (pixels) | |
TotalFreezeDurationInMs |
Totale duur van blokkeren (milliseconden) |
Metrische gegevens voor uitgaande schermshare
Momenteel zijn statistiekenvelden hetzelfde als metrische gegevens voor uitgaande video.
Metrische gegevens voor binnenkomende schermshare
Op dit moment zijn statistiekenvelden hetzelfde als metrische gegevens voor binnenkomende video' s.
Metrische gegevens over uitgaande gegevenskanalen
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
PacketCount |
Het totale aantal verzonden pakketten. |
Metrische gegevens van binnenkomende gegevenskanalen
Naam van meetwaarde | Beschrijving | Opmerkingen |
---|---|---|
JitterInMs |
Pakket jitter (milliseconden) | Lager is beter. |
PacketCount |
Het totale aantal verzonden pakketten. |