Enabling sender-side statistics

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

var publisherBuilder = new Publisher.Builder()
{
    HasSenderStatsTrack = true
};

Publisher publisher = publisherBuilder.Build();

Wenn HasSenderStatsTrack 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 Event-Handler abonnieren:

subscriber.VideoStatsUpdated += (sender, stats) => 
{
    // Received video stats
};

subscriber.AudioStatsUpdated += (sender, stats) => 
{
    // Received audio stats
};

Receiving statistics events

Die absenderseitigen Statistiken werden über die VideoStatsUpdated und AudioStatsUpdated Ereignisse für Video und Audio. Die SenderStats Klasse, die sowohl in VideoNetworkStatsEventArgs und AudioNetworkStatsEventArgsbietet zwei Eigenschaften:

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

  • ConnectionEstimatedBandwidth - Die aktuell geschätzte Bandbreite 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.

Innerhalb der Statistik-Ereignishandler können Sie auf die absenderseitigen Metriken über die optionale SenderStats Eigentum:

subscriber.VideoStatsUpdated += (sender, stats) =>
{
    Console.WriteLine($"Packets received: {stats.PacketsReceived}");
    Console.WriteLine($"Packets lost: {stats.PacketsLost}");
    Console.WriteLine($"Bytes received: {stats.BytesReceived}");
    Console.WriteLine($"Timestamp: {stats.Timestamp}");

    if (stats.SenderStats != null)
    {
        Console.WriteLine($"Connection max allocated bitrate: {stats.SenderStats.ConnectionMaxAllocatedBitrate}");
        Console.WriteLine($"Connection current estimated bandwidth: {stats.SenderStats.ConnectionEstimatedBandwidth}");
    }
    else
    {
        Console.WriteLine("Sender stats not available yet.");
    }
};

Der gleiche Ansatz gilt für Audiostatistiken mit der Option AudioStatsUpdated Veranstaltung.