Enabling sender-side statistics

Um absenderseitige Statistiken zu erhalten, aktivieren Sie diese für den Herausgeber des Streams, indem Sie die senderStatisticsTrack Eigenschaft zu true bei der Erstellung des Verlags:

Publisher publisher = new Publisher.Builder(context)
        .senderStatsTrack(true) // Enable sender-side stats
        .build();

Wenn senderStatsTrack nicht aktiviert ist, wird kein Absenderstatistikkanal für diesen Verlag veröffentlicht. Der Standardwert ist false.

Subscribing to sender-side statistics

Abonnenten erhalten nur dann automatisch Absenderstatistiken, wenn der Herausgeber diese aktiviert hat und der Abonnent einen Listener für Netzwerkstatistik-Ereignisse registriert hat.

Sie können Video- und Audiostatistiken über die entsprechenden Hörerschnittstellen abonnieren:

subscriber.setVideoStatsListener((subscriber, stats) -> {  
    // Received stats  
});  
  
subscriber.setAudioStatsListener((subscriber, stats) -> {  
    // Received stats  
});

Receiving statistics events

Die absenderseitigen Statistiken werden über die SubscriberKit.VideoStatsListener und SubscriberKit.AudioStatsListener Rückrufe für Video und Audio. Die SubscriberKit.SubscriberVideoStats und SubscriberKit.SubscriberAudioStats Klassen enthalten jeweils diese Eigenschaften:

  • connectionMaxAllocatedBitrate - Die maximale Bitrate, die für die Verbindung geschätzt werden kann

  • connectionEstimatedBandwidth - Die aktuelle geschätzte Bitrate für die Verbindung

Diese beiden Metriken werden pro Audio-Video-Bündel berechnet, so dass sowohl in der Video- als auch in der Audiostatistik die gleichen Werte erscheinen. Da sie den Transport und nicht einzelne Tracks widerspiegeln, werden die Metriken sowohl für Audio als auch für Video verwendet.

Die stats Objekt enthält ein optionales senderStats das die Statistik auf der Absenderseite liefert. Zum Beispiel, wenn Sie SubscriberKit.setVideoStatsListener()die stats Parameter ist ein SubscriberKit.SubscriberVideoStats Objekt:

subscriber.setVideoStatsListener((subscriber, stats) -> {  
    Log.d(TAG, "Packets received: " + stats.videoPacketsReceived);  
    Log.d(TAG, "Packets lost: " + stats.videoPacketsLost);  
    Log.d(TAG, "Bytes received: " + stats.videoBytesReceived);  
    Log.d(TAG, "Timestamp: " + stats.timeStamp);  
  
    if (stats.senderStats != null) {  
        Log.d(TAG, "Connection max allocated bitrate: " + stats.senderStats.connectionMaxAllocatedBitrate);
        Log.d(TAG, "Connection current estimated bandwidth: " + stats.senderStats.connectionEstimatedBandwidth);
    } else {  
        Log.d(TAG, "Sender stats not available yet.");  
    }  
});

Das Gleiche gilt für Audiostatistiken mit SubscriberKit.AudioStatsListener.