メディア品質の統計情報
Azure Communication Services を使用する VoIP 通話とビデオ通話のメディア品質をより理解するために、メディア品質統計と呼ばれる機能があります。 これを使用して低次のオーディオ、ビデオ、画面共有の品質メトリックを調べ、通話の受信と送信のメトリックを取得します。
進行中の通話のメディア品質に関する統計情報
重要
SDK バージョン 1.20.1 以降、SDK のメディア品質統計に関するインターフェイスが更新されます
メディア品質の統計情報は、コア Call
API の拡張機能です。 まず、mediaStatsFeature
API オブジェクトを取得する必要があります。
const mediaStatsFeature = call.feature(Features.MediaStats);
メディア統計データを受信するため、sampleReported
イベントまたは summaryReported
イベントをサブスクライブできます。
sampleReported
イベントは 1 秒おきにトリガーされます。 これは UI 表示または独自のデータ パイプラインのデータ ソースとして最適です。
summaryReported
イベントには、全期間のデータの集計値が含まれています。これは、概要だけが必要な場合に便利です。
summaryReported
イベントの間隔を制御する場合は、型 MediaStatsCollectorOptions
の mediaStatsCollectorOptions
を定義する必要があります。 それ以外の場合、SDK は既定値を使用します。
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);
});
メディア統計コレクターを使用する必要がない場合は、mediaStatsCollector
の dispose
メソッドを呼び出すことができます。
mediaStatsCollector.dispose();
コレクターは通話の終了時に内部で再利用されるため、通話が終了するたびに mediaStatsCollector
の dispose
メソッドを呼び出す必要はありません。
MediaStatsCollectorOptions
MediaStatsCollectorOptions
は省略可能で、MediaStatsCollectorOptions
には 2 つの省略可能なフィールドがあります。
aggregationInterval
は、統計が集計される間隔 (秒単位) です。 既定値は 10 です。dataPointsPerAggregation
は、各集計イベントのデータ ポイント数を定義します。 既定値は 6 です。
これら 2 つの値によって、SDK が summaryReported
イベントを生成する頻度と、レポートに含まれる集計データ ポイントの数が決まります。
summaryReported
イベントは aggregationInterval * dataPointsPerAggregation
秒ごとに発生します。
たとえば、次の値を設定したとします。
aggregationInterval
= 1dataPointsPerAggregation
= 60
summaryReported
イベントは 60 秒ごとに発生し、記録された各統計には 60 個の独立ユニットが含まれます。
次の値を設定したとします。:
aggregatinInterval
= 60dataPointsPerAggregation
= 1
summaryReported
イベントは 60 秒ごとに発生し、記録された各統計には 1 個の独立ユニットが含まれます。
ベスト プラクティス
オフラインで調査するためにデータを収集する場合は、データを収集し、通話の終了後にパイプライン インジェストに送ることをお勧めします。 通話中にこのデータを送信する場合は、Azure Communication Services 通話を続行するために必要なインターネット帯域幅を使用できます (特に利用可能な帯域幅が少ない場合)。
sampleReported
イベントまたは summaryReported
イベントでは、メディア統計データは単純なキーと値のマッピングだけではありません。
sampleReported
イベントによって報告されるイベント データの型宣言を以下に示します。
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>[];
}
イベント データは、送信方向と受信方向の両方を含む、通話内の各メディア ストリームの統計データを提供します。
各自の使用シナリオに従ってデータを表示したり処理する適切な方法を見つけるために、console.log
を使用してイベントを出力し、レイアウトと値の変化を観察することが推奨されます。
オーディオ送信のメトリック
メトリックの名前 | 説明 | 説明 |
---|---|---|
id |
統計 ID | 特にイベント内にメディアの種類と方向が同じ複数の統計がある場合に、複数のイベントにわたって統計を識別するために使用されます。 |
codecName |
コーデック名 | OPUS、G722。 |
bitrate |
オーディオ送信ビット レート (ビット/秒) | 一般的な値は 24 Kbps の範囲 (通常は 36 - 128 Kbps)。 |
jitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
packets |
送信されたパケットの合計数。 | |
packetsPerSecond |
パケット レート (パケット/秒) | |
packetsLost |
リモート エンドから報告された失われたパケットの合計数。 | |
packetsLostPerSecond |
パケット損失率 (パケット/秒) | 小さいほど良好です。 |
rttInMs |
ラウンド トリップ時間 (ミリ秒) | 小さいほど良好です。 RTCP レシーバー レポートから計算されます。 ラウンド トリップ時間は 200 ミリ秒以下をお勧めします。 |
audioInputLevel |
マイクからのオーディオ ボリューム レベル | 値の範囲は 0 から 65536 です。 値 0 は無音を表します。 |
transportId |
転送 ID | 転送内の統計を関連付けるために使用されます。 |
オーディオ受信のメトリック
1.20.1 より前のバージョンの SDK では、jitterBufferDelayInMs
は jitterBufferInMs
として存在していました。
メトリックの名前 | 説明 | 説明 |
---|---|---|
id |
統計 ID | 特にイベント内にメディアの種類と方向が同じ複数の統計がある場合に、複数のイベントにわたって統計を識別するために使用されます。 |
codecName |
コーデック名 | OPUS、G722。 |
bitrate |
オーディオ受信ビットレート (ビット/秒) | 一般的な値は 24 Kbps の範囲 (通常は 36 - 128 Kbps)。 |
jitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
packets |
受信されたパケットの合計数。 | |
packetsPerSecond |
パケット レート (パケット/秒) | |
packetsLost |
失われたパケットの合計数。 | |
packetsLostPerSecond |
パケット損失率 (パケット/秒) | 小さいほど良好です。 |
jitterBufferDelayInMs |
ジッター バッファー (ミリ秒) | 小さいほど良好です。 ジッター バッファーは、スムーズな再生に使用されます。 この値は、サンプルのパケットがジッター バッファーに留まる時間です。 |
audioOutputLevel |
受信ストリームからのオーディオ ボリューム レベル | 値の範囲は 0 から 65536 です。 値 0 は無音を表します。 |
healedRatio |
受け取ったサンプルの合計数に対する隠しサンプルの比率 (silentConcealedSamples を除く) |
情報のみ。 |
transportId |
転送 ID | 転送内の統計を関連付けるために使用されます。 |
ビデオ送信のメトリック
SDK バージョン 1.20.1 以降では、ビデオ送信メトリックに altLayouts
メトリック フィールドが含まれています。これにより、サイマルキャスト ストリーム統計をより適切に表現できます。
メトリックの名前 | 説明 | 説明 |
---|---|---|
id |
統計 ID | 特にイベント内にメディアの種類と方向が同じ複数の統計がある場合に、複数のイベントにわたって統計を識別するために使用されます。 |
codecName |
コーデック名 | H264、VP8、VP9。 |
bitrate |
ビデオ送信ビットレート (ビット/秒) | |
jitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
packets |
送信されたパケットの合計数。 | |
packetsPerSecond |
パケット レート (パケット/秒) | |
packetsLost |
リモート エンドから報告された失われたパケットの合計数。 | |
packetsLostPerSecond |
パケット損失率 (パケット/秒) | 小さいほど良好です。 |
rttInMs |
ラウンド トリップ時間 (ミリ秒) | 小さいほど良好です。 RTCP レシーバー レポートから計算されます。 ラウンド トリップ時間は 200 ミリ秒以下をお勧めします。 |
frameRateInput |
ビデオ ソースからのフレーム レート (1 秒あたりのフレーム数) | |
frameWidthInput |
ビデオ ソースからの最後のフレームのフレーム幅 (ピクセル) | |
frameHeightInput |
ビデオ ソースからの最後のフレームのフレーム高さ (ピクセル) | |
framesEncoded |
RTP ストリームに対して正常にエンコードされたフレームの数。 | |
frameRateEncoded |
RTP ストリームに対して正常にエンコードされたフレーム レート (1 秒あたりのフレーム数) | |
framesSent |
RTP ストリーム上で送信されたフレームの数 | |
frameRateSent |
RTP ストリームで送信されるフレーム レート (1 秒あたりのフレーム数) | |
frameWidthSent |
エンコードされたフレームのフレーム幅 (ピクセル) | |
frameHeightSent |
エンコードされたフレームのフレーム高さ (ピクセル) | |
keyFramesEncoded |
RTP ストリームに対して正常にエンコードされたキー フレーム | |
transportId |
転送 ID | 転送内の統計を関連付けるために使用されます。 |
altLayouts |
サイマルキャスト ストリーム | altLayouts には、ビデオ送信と同じメトリックが含まれています |
ビデオ受信のメトリック
1.20.1 より前のバージョンの SDK では、jitterBufferDelayInMs
は jitterBufferInMs
として存在していました。
メトリックの名前 | 説明 | 説明 |
---|---|---|
id |
統計 ID | 特にイベント内にメディアの種類と方向が同じ複数の統計がある場合に、複数のイベントにわたって統計を識別するために使用されます。 |
codecName |
コーデック名 | H264、VP8、VP9。 |
bitrate |
ビデオ受信ビットレート (ビット/秒) | |
jitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
packets |
受信されたパケットの合計数。 | |
packetsPerSecond |
パケット レート (パケット/秒) | |
packetsLost |
失われたパケットの合計数。 | |
packetsLostPerSecond |
パケット損失率 (パケット/秒) | 小さいほど良好です。 |
rttInMs |
ラウンド トリップ時間 (ミリ秒) | 小さいほど良好です。 RTCP センダー レポートから計算されます。 ラウンド トリップ時間は 200 ミリ秒以下をお勧めします。 |
streamId |
ストリーム ID | streamId の値は、VideoStreamCommon の id に対応します。 送信者を照合するために使用できます。 |
jitterBufferDelayInMs |
ジッター バッファー (ミリ秒) | 小さいほど良好です。 ジッター バッファーは、スムーズな再生に使用されます。 この値は、フレームのパケットがジッター バッファーに留まる時間です。 |
frameRateDecoded |
RTP ストリームに対して正しくデコードされたフレーム レート (1 秒あたりのフレーム数) | |
frameRateReceived |
RTP ストリームで受信されるフレーム レート (1 秒あたりのフレーム数) | |
frameWidthReceived |
デコードされたフレームのフレーム幅 (ピクセル) | |
frameHeightReceived |
デコードされたフレームのフレーム高さ (ピクセル) | |
longestFreezeDurationInMs |
最も長い凍結期間 (ミリ秒) | |
totalFreezeDurationInMs |
合計凍結期間 (ミリ秒) | |
framesReceived |
RTP ストリームで受信したフレームの合計数 | |
framesDecoded |
RTP ストリームに対して正しくデコードされたフレームの合計数 | |
framesDropped |
削除されたフレームの合計数 | |
keyFramesDecoded |
RTP ストリームに対して正しくデコードされたキー フレームの合計数 | |
transportId |
転送 ID | 転送内の統計を関連付けるために使用されます。 |
画面共有送信のメトリック
現在、統計フィールドはビデオ送信メトリックと同じです。
画面共有受信のメトリック
現在、統計フィールドはビデオ受信メトリックと同じです。
転送メトリック
転送関連のメトリックは、ACS Web SDK 1.20.1 以降分離されました。
以前のバージョンでは、rttInMs
はオーディオ、ビデオ、画面共有において pairRttInMs
として存在していました。
availableIncomingBitrate
は、オーディオ、ビデオ、画面共有の受信統計の availableBitrate
でした。
availableOutgoingBitrate
は、オーディオ、ビデオ、画面共有の送信統計の availableBitrate
でした。
メトリックの名前 | 説明 | Comments |
---|---|---|
id |
転送 ID | 他の統計内の transportId と関連付けるために使用されます |
rttInMs |
ラウンド トリップ時間 (ミリ秒) | この値は、STUN 接続チェックから計算されます。 ラウンド トリップ時間は 200 ミリ秒以下をお勧めします。 |
availableIncomingBitrate |
帯域幅の推定 (ビット/秒) | この値は、WebRTC セッションで使用される帯域幅推定アルゴリズムによっては利用できない場合があります |
availableOutgoingBitrate |
帯域幅の推定 (ビット/秒) | この値は、WebRTC セッションで使用される帯域幅推定アルゴリズムによっては利用できない場合があります |
SDK バージョン 1.20.1 (GA) で変更された内容
1.20.1 (GA) では MediaStats feature API がサポートされるようになりました。
以前のベータ版と比較して、この GA バージョンの API インターフェイスには、いくつかの小さな変更も加えられています。
以前のベータ版では、pairRttInMs
と availableBitrate
はオーディオ、ビデオ、画面共有の統計に含まれていました。 これらのメトリックは転送メトリックへと分割されました。
オーディオ、ビデオ、画面共有統計に packets
および packetsLost
メトリック フィールドが導入されました。 これらのメトリックは、2 つの異なる時刻の間に送信または受信されたパケットの合計数を計算するのに役立ちます。
ビデオおよび画面共有統計から frameRateOutput
が削除されています。 代わりに frameRateDecoded
を使用できます。
メトリック フィールド jitterBufferInMs
は、パケットがジッター バッファーの中に留まる時間を示すため、わかりやすさのために名前が jitterBufferDelayInMs
に変更されました。
進行中の通話のメディア品質に関する統計情報
メディア品質の統計情報は、コア Call
API の拡張機能です。 まず、MediaStatisticsCallFeature
API オブジェクトを取得する必要があります。
MediaStatisticsCallFeature mediaStatisticsCallFeature = call.feature(Features.MEDIA_STATISTICS);
MediaStatisticsCallFeature
オブジェクトには、次の API 構造があります。
OnReportReceivedListener
イベントは、メディア統計の定期的なレポートをリッスンします。getReportIntervalInSeconds
は、メディア統計レポートの生成間隔を秒単位で取得します。 SDK は既定で10
秒を使用します。updateReportIntervalInSeconds()
は、メディア統計レポートの生成間隔を秒単位で更新します。 SDK は既定で10
秒を使用します。MediaStatisticsReport
には、オーディオ、ビデオ、画面共有に分類された送受信メディア統計の定義が含まれます。getOutgoingStatistics()
: 送信メディアのメディア統計情報の一覧。getAudioStatistics()
: 送信オーディオのメディア統計情報の一覧。getVideoStatistics()
: 送信ビデオのメディア統計情報の一覧。getScreenShareStatistics()
: 送信画面共有のメディア統計情報の一覧。getDataChannelStatistics()
: データ チャネルのメディア統計の一覧。
getIncomingStatistics()
: 受信メディアのメディア統計情報の一覧。getAudioStatistics()
: 受信オーディオのメディア統計情報の一覧。getVideoStatistics()
: 受信ビデオのメディア統計情報の一覧。getScreenShareStatistics()
: 受信画面共有のメディア統計情報の一覧。getDataChannelStatistics()
: データ チャネルのメディア統計の一覧。
getLastUpdatedAt()
: レポートが生成された日付。
次に、addOnReportReceivedListener
イベントにサブスクライブして、現在のメディア品質統計に関する定期的な更新値を取得します。
mediaStatisticsCallFeature.addOnReportReceivedListener(handleReportReceivedListener);
// Optionally, set the interval for media statistics report generation
mediaStatisticsCallFeature.updateReportIntervalInSeconds(15);
private void handleReportReceivedListener(MediaStatisticsReportEvent 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();
}
ベスト プラクティス
オフラインで調査するためにデータを収集する場合は、データを収集し、通話の終了後にパイプライン インジェストに送ることをお勧めします。 通話中にこのデータを送信する場合は、Azure Communication Services 通話を続行するために必要なインターネット帯域幅を使用できます (特に利用可能な帯域幅が少ない場合)。
送信オーディオのメトリック
メトリックの名前 | 説明 | 説明 |
---|---|---|
CodecName |
コーデック名 | |
BitrateInBps |
オーディオの送信ビットレート (ビット/秒) | 一般的な値は 24 Kbps の範囲 (通常は 36 - 128 Kbps)。 |
JitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
PacketCount |
送信されたパケットの合計数。 |
受信オーディオのメトリック
メトリックの名前 | 説明 | 説明 |
---|---|---|
CodecName |
コーデック名 | |
JitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
PacketCount |
送信されたパケットの合計数。 | |
PacketsLostPerSecond |
パケット損失率 (パケット/秒) | 小さいほど良好です。 |
送信ビデオのメトリック
メトリックの名前 | 説明 | 説明 |
---|---|---|
CodecName |
コーデック名 | |
BitrateInBps |
ビデオ送信ビットレート (ビット/秒) | |
PacketCount |
送信されたパケットの合計数。 | |
FrameRate |
RTP ストリームで送信されるフレーム レート (1 秒あたりのフレーム数) | |
FrameWidth |
エンコードされたフレームのフレーム幅 (ピクセル) | |
FrameHeight |
エンコードされたフレームのフレーム高さ (ピクセル) |
受信ビデオのメトリック
メトリックの名前 | 説明 | 説明 |
---|---|---|
CodecName |
コーデック名 | |
BitrateInBps |
ビデオ受信ビットレート (ビット/秒) | |
JitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
PacketCount |
送信されたパケットの合計数。 | |
PacketsLostPerSecond |
パケット損失率 (パケット/秒) | 小さいほど良好です。 |
StreamId |
ストリーム ID | streamId 値は、リモート参加者のビデオの ID に対応します。 送信者を照合するために使用できます。 |
FrameRate |
RTP ストリームで受信されるフレーム レート (1 秒あたりのフレーム数) | |
FrameWidth |
デコードされたフレームのフレーム幅 (ピクセル) | |
FrameHeight |
デコードされたフレームのフレーム高さ (ピクセル) | |
TotalFreezeDurationInMs |
合計凍結期間 (ミリ秒) |
送信画面共有メトリック
現状、統計フィールドは "送信ビデオ メトリック" と同じです。
受信画面共有メトリック
現状、統計フィールドは "受信ビデオ メトリック" と同じです。
送信データ チャネル メトリック
メトリックの名前 | 説明 | Comments |
---|---|---|
PacketCount |
送信されたパケットの合計数。 |
受信データ チャネル メトリック
メトリックの名前 | 説明 | Comments |
---|---|---|
JitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
PacketCount |
送信されたパケットの合計数。 |
進行中の通話のメディア品質に関する統計情報
メディア品質の統計情報は、コア Call
API の拡張機能です。 まず、mediaStatisticsCallFeature
API オブジェクトを取得する必要があります。
var mediaStatisticsCallFeature = self.call.feature(Features.mediaStatistics)
mediaStatisticsCallFeature
オブジェクトには、次の API 構造があります。
didReceiveReport
デリゲート メソッドは、メディア統計の定期的なレポートをリッスンします。reportIntervalInSeconds
は、メディア統計レポートの生成間隔を秒単位で取得します。 SDK は既定で10
秒を使用します。updateReportInterval(inSeconds)
は、メディア統計レポートの生成間隔を秒単位で更新します。 SDK は既定で10
秒を使用します。MediaStatisticsReport
オブジェクトには、音声、ビデオ、画面共有に分類された送信メディアと受信メディアの統計情報の定義が含まれます。outgoingMediaStatistics
: 送信メディアのメディア統計情報の一覧。audio
: 送信オーディオのメディア統計情報の一覧。video
: 送信ビデオのメディア統計情報の一覧。screenShare
: 送信画面共有のメディア統計情報の一覧。dataChannel
: 送信データ チャネルのメディア統計の一覧。
incomingMediaStatistics
: 受信メディアのメディア統計情報の一覧。audio
: 受信オーディオのメディア統計情報の一覧。video
: 受信ビデオのメディア統計情報の一覧。screenShare
: 受信画面共有のメディア統計情報の一覧。dataChannel
: 受信データ チャネルのメディア統計の一覧。
lastUpdated
: レポートが生成された日付。
次に、現在のメディア品質統計に関する定期的な更新情報を取得するために didReceiveReport
デリゲートを実装します。
// 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
}
}
ベスト プラクティス
オフラインで調査するためにデータを収集する場合は、データを収集し、通話の終了後にパイプライン インジェストに送ることをお勧めします。 通話中にこのデータを送信する場合は、Azure Communication Services 通話を続行するために必要なインターネット帯域幅を使用できます (特に利用可能な帯域幅が少ない場合)。
送信オーディオのメトリック
メトリックの名前 | 説明 | 説明 |
---|---|---|
CodecName |
コーデック名 | |
BitrateInBps |
オーディオの送信ビットレート (ビット/秒) | 一般的な値は 24 Kbps の範囲 (通常は 36 - 128 Kbps)。 |
JitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
PacketCount |
送信されたパケットの合計数。 |
受信オーディオのメトリック
メトリックの名前 | 説明 | 説明 |
---|---|---|
CodecName |
コーデック名 | |
JitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
PacketCount |
送信されたパケットの合計数。 | |
PacketsLostPerSecond |
パケット損失率 (パケット/秒) | 小さいほど良好です。 |
送信ビデオのメトリック
メトリックの名前 | 説明 | 説明 |
---|---|---|
CodecName |
コーデック名 | |
BitrateInBps |
ビデオ送信ビットレート (ビット/秒) | |
PacketCount |
送信されたパケットの合計数。 | |
FrameRate |
RTP ストリームで送信されるフレーム レート (1 秒あたりのフレーム数) | |
FrameWidth |
エンコードされたフレームのフレーム幅 (ピクセル) | |
FrameHeight |
エンコードされたフレームのフレーム高さ (ピクセル) |
受信ビデオのメトリック
メトリックの名前 | 説明 | 説明 |
---|---|---|
CodecName |
コーデック名 | |
BitrateInBps |
ビデオ受信ビットレート (ビット/秒) | |
JitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
PacketCount |
送信されたパケットの合計数。 | |
PacketsLostPerSecond |
パケット損失率 (パケット/秒) | 小さいほど良好です。 |
StreamId |
ストリーム ID | streamId 値は、リモート参加者のビデオの ID に対応します。 送信者を照合するために使用できます。 |
FrameRate |
RTP ストリームで受信されるフレーム レート (1 秒あたりのフレーム数) | |
FrameWidth |
デコードされたフレームのフレーム幅 (ピクセル) | |
FrameHeight |
デコードされたフレームのフレーム高さ (ピクセル) | |
TotalFreezeDurationInMs |
合計凍結期間 (ミリ秒) |
送信画面共有メトリック
現状、統計フィールドは "送信ビデオ メトリック" と同じです。
受信画面共有メトリック
現状、統計フィールドは "受信ビデオ メトリック" と同じです。
送信データ チャネル メトリック
メトリックの名前 | 説明 | Comments |
---|---|---|
PacketCount |
送信されたパケットの合計数。 |
受信データ チャネル メトリック
メトリックの名前 | 説明 | Comments |
---|---|---|
JitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
PacketCount |
送信されたパケットの合計数。 |
進行中の通話のメディア品質に関する統計情報
メディア品質の統計情報は、コア CommunicationCall
API の拡張機能です。 まず、MediaStatisticsCallFeature
API オブジェクトを取得する必要があります。
MediaStatisticsCallFeature mediaStatisticsCallFeature = call.Features.MediaStatistics;
MediaStatisticsCallFeature
機能のオブジェクトには、次の API 構造があります。
ReportReceived
イベントは、メディア統計の定期的なレポートをリッスンします。ReportIntervalInSeconds
は、メディア統計レポートの生成間隔を秒単位で取得します。 SDK は既定で10
秒を使用します。UpdateReportIntervalInSeconds()
は、メディア統計レポートの生成間隔を秒単位で更新します。 SDK は既定で10
秒を使用します。MediaStatisticsReport
オブジェクトには、音声、ビデオ、画面共有に分類された送信メディアと受信メディアの統計情報の定義が含まれます。OutgoingMediaStatistics
: 送信メディアのメディア統計情報の一覧。Audio
: 送信オーディオのメディア統計情報の一覧。Video
: 送信ビデオのメディア統計情報の一覧。ScreenShare
: 送信画面共有のメディア統計情報の一覧。DataChannel
: 送信データ チャネルのメディア統計の一覧。
IncomingMediaStatistics
: 受信メディアのメディア統計情報の一覧。Audio
: 受信オーディオのメディア統計情報の一覧。Video
: 受信ビデオのメディア統計情報の一覧。ScreenShare
: 受信画面共有のメディア統計情報の一覧。DataChannel
: 受信データ チャネルのメディア統計の一覧。
LastUpdateAt
: レポートが生成された日付。
次に、SampleReported
イベントにサブスクライブして、現在のメディア品質統計に関する定期的な更新値を取得します。
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;
}
ベスト プラクティス
オフラインで調査するためにデータを収集する場合は、データを収集し、通話の終了後にパイプライン インジェストに送ることをお勧めします。 通話中にこのデータを送信する場合は、Azure Communication Services 通話を続行するために必要なインターネット帯域幅を使用できます (特に利用可能な帯域幅が少ない場合)。
送信オーディオのメトリック
メトリックの名前 | 説明 | 説明 |
---|---|---|
CodecName |
コーデック名 | |
BitrateInBps |
オーディオの送信ビットレート (ビット/秒) | 一般的な値は 24 Kbps の範囲 (通常は 36 - 128 Kbps)。 |
JitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
PacketCount |
送信されたパケットの合計数。 |
受信オーディオのメトリック
メトリックの名前 | 説明 | 説明 |
---|---|---|
CodecName |
コーデック名 | |
JitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
PacketCount |
送信されたパケットの合計数。 | |
PacketsLostPerSecond |
パケット損失率 (パケット/秒) | 小さいほど良好です。 |
送信ビデオのメトリック
メトリックの名前 | 説明 | 説明 |
---|---|---|
CodecName |
コーデック名 | |
BitrateInBps |
ビデオ送信ビットレート (ビット/秒) | |
PacketCount |
送信されたパケットの合計数。 | |
FrameRate |
RTP ストリームで送信されるフレーム レート (1 秒あたりのフレーム数) | |
FrameWidth |
エンコードされたフレームのフレーム幅 (ピクセル) | |
FrameHeight |
エンコードされたフレームのフレーム高さ (ピクセル) |
受信ビデオのメトリック
メトリックの名前 | 説明 | 説明 |
---|---|---|
CodecName |
コーデック名 | |
BitrateInBps |
ビデオ受信ビットレート (ビット/秒) | |
JitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
PacketCount |
送信されたパケットの合計数。 | |
PacketsLostPerSecond |
パケット損失率 (パケット/秒) | 小さいほど良好です。 |
StreamId |
ストリーム ID | streamId 値は、リモート参加者のビデオの ID に対応します。 送信者を照合するために使用できます。 |
FrameRate |
RTP ストリームで受信されるフレーム レート (1 秒あたりのフレーム数) | |
FrameWidth |
デコードされたフレームのフレーム幅 (ピクセル) | |
FrameHeight |
デコードされたフレームのフレーム高さ (ピクセル) | |
TotalFreezeDurationInMs |
合計凍結期間 (ミリ秒) |
送信画面共有メトリック
現状、統計フィールドは "送信ビデオ メトリック" と同じです。
受信画面共有メトリック
現状、統計フィールドは "受信ビデオ メトリック" と同じです。
送信データ チャネル メトリック
メトリックの名前 | 説明 | Comments |
---|---|---|
PacketCount |
送信されたパケットの合計数。 |
受信データ チャネル メトリック
メトリックの名前 | 説明 | Comments |
---|---|---|
JitterInMs |
パケット ジッター (ミリ秒) | 小さいほど良好です。 |
PacketCount |
送信されたパケットの合計数。 |