メディア品質の統計情報

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 イベントの間隔を制御する場合は、型 MediaStatsCollectorOptionsmediaStatsCollectorOptions を定義する必要があります。 それ以外の場合、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);
});

メディア統計コレクターを使用する必要がない場合は、mediaStatsCollectordispose メソッドを呼び出すことができます。

mediaStatsCollector.dispose();

コレクターは通話の終了時に内部で再利用されるため、通話が終了するたびに mediaStatsCollectordispose メソッドを呼び出す必要はありません。

MediaStatsCollectorOptions

MediaStatsCollectorOptions は省略可能で、MediaStatsCollectorOptions には 2 つの省略可能なフィールドがあります。

  • aggregationInterval は、統計が集計される間隔 (秒単位) です。 既定値は 10 です。
  • dataPointsPerAggregation は、各集計イベントのデータ ポイント数を定義します。 既定値は 6 です。

これら 2 つの値によって、SDK が summaryReported イベントを生成する頻度と、レポートに含まれる集計データ ポイントの数が決まります。

summaryReported イベントは aggregationInterval * dataPointsPerAggregation 秒ごとに発生します。

たとえば、次の値を設定したとします。

  • aggregationInterval = 1
  • dataPointsPerAggregation = 60

summaryReported イベントは 60 秒ごとに発生し、記録された各統計には 60 個の独立ユニットが含まれます。

次の値を設定したとします。:

  • aggregatinInterval = 60
  • dataPointsPerAggregation = 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 バージョンでは、jitterBufferDelayInMsjitterBufferInMs として存在していました。

メトリックの名前 説明 説明
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 では、jitterBufferDelayInMsjitterBufferInMs として存在していました。

メトリックの名前 説明 説明
id 統計 ID 特にイベント内にメディアの種類と方向が同じ複数の統計がある場合に、複数のイベントにわたって統計を識別するために使用されます。
codecName コーデック名 H264、VP8、VP9。
bitrate ビデオ受信ビットレート (ビット/秒)
jitterInMs パケット ジッター (ミリ秒) 小さいほど良好です。
packets 受信されたパケットの合計数。
packetsPerSecond パケット レート (パケット/秒)
packetsLost 失われたパケットの合計数。
packetsLostPerSecond パケット損失率 (パケット/秒) 小さいほど良好です。
rttInMs ラウンド トリップ時間 (ミリ秒) 小さいほど良好です。 RTCP センダー レポートから計算されます。 ラウンド トリップ時間は 200 ミリ秒以下をお勧めします。
streamId ストリーム ID streamId の値は、VideoStreamCommonid に対応します。 送信者を照合するために使用できます。
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 インターフェイスには、いくつかの小さな変更も加えられています。

以前のベータ版では、pairRttInMsavailableBitrate はオーディオ、ビデオ、画面共有の統計に含まれていました。 これらのメトリックは転送メトリックへと分割されました。

オーディオ、ビデオ、画面共有統計に 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(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();
}

ベスト プラクティス

オフラインで調査するためにデータを収集する場合は、データを収集し、通話の終了後にパイプライン インジェストに送ることをお勧めします。 通話中にこのデータを送信する場合は、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 送信されたパケットの合計数。