GStreamerのC言語のライブラリの、res = gst_structure_get_double(stats, "bandwidth-mbps", &bandwidth_mbps); g_print("bandwidth-mbps: %d %f\n", res, bandwidth_mbps);の値が何の値を返しているのか教えて下さい

GStreamerのC言語のライブラリの、res = gst_structure_get_double(stats, "bandwidth-mbps", &bandwidth_mbps); g_print("bandwidth-mbps: %d %f\n", res, bandwidth_mbps);の値が何の値を返しているのか教えて下さい

このプログラムにおける bandwidth_mbps の値は、SRT(Secure Reliable Transport)通信における推定帯域幅(Mbps) を示していると考えられます。


bandwidth_mbps の取得と用途

1. どこで取得しているか

bandwidth_mbps は、以下のコードで取得されています。

c
res = gst_structure_get_double(stats, "bandwidth-mbps", &bandwidth_mbps);
g_print("bandwidth-mbps: %d %f\n", res, bandwidth_mbps);

この部分では、GStreamer の srtserversink から取得できる SRTの統計情報 (stats) から "bandwidth-mbps" というキーの値を取得しています。

GStreamer の SRTプラグイン (srtserversink) は、SRTプロトコルのメトリクス情報を提供し、その中に "bandwidth-mbps" というパラメータが含まれています。

つまり、SRT通信時の「利用可能な推定帯域幅」をリアルタイムで取得している。

bandwidth_mbps の意味

  • SRTの推定帯域幅(Mbps)
  • リアルタイムでSRTの通信状況から取得される
  • 現在のネットワーク環境で送信可能な最大帯域を示す

bandwidth_mbps の用途

  • エンコードのビットレート調整に使用
  • ネットワークの状況に応じて、適切なビットレートを決定

「SRTの推定帯域幅(Mbps)」というのは、「今使っている帯域なのか」、「まだ使える帯域なのか」どちらでしょうか

bandwidth_mbps は、SRT (Secure Reliable Transport) における「推定帯域幅 (Estimated Bandwidth)」を示す値であり、その意味合いは 「まだ使える帯域」= 利用可能な推定帯域 に近いものです。


1. bandwidth_mbps は「今使っている帯域」ではない

理由 ①: "send-rate-mbps" や "receive-rate-mbps" という項目が別にある

プログラム内では、SRTの統計情報 (stats) から bandwidth-mbps の他に、send-rate-mbpsreceive-rate-mbps という値も取得できるようになっています。

c
res = gst_structure_get_double(stats, "send-rate-mbps", &send_rate_mbps);
g_print("send-rate-mbps: %d %f\n", res, send_rate_mbps);

res = gst_structure_get_double(stats, "receive-rate-mbps", &receive_rate_mbps);
g_print("receive-rate-mbps: %d %f\n", res, receive_rate_mbps);

  • send-rate-mbps → 現在の送信レート(今実際に使っている帯域)
  • receive-rate-mbps → 現在の受信レート(今実際に使っている帯域)
  • bandwidth-mbpsSRTプロトコルが推定した、利用可能な最大帯域

このことから、bandwidth-mbps は「現在使っている帯域」ではなく、「ネットワークが許容できる帯域の推定値」 であると考えられます。


2. bandwidth-mbps の定義(SRT公式の仕様より)

SRTの公式仕様では、"Estimated Bandwidth"(推定帯域)は次のように説明されています。

bandwidth-mbps: The estimated maximum available bandwidth of the connection, calculated by the SRT protocol based on observed network conditions such as packet loss and RTT.

要点

  • 「ネットワークの状況(パケットロスやRTTなど)を基にSRTが計算した、利用可能な最大帯域」 である。
  • 現在の送信レートとは異なる
  • "available bandwidth"(利用可能な帯域) という表現が使われている。

つまり、SRTが「この回線ではこのくらいの帯域が利用できるはずだ」と推定している値 であり、今実際に使用している帯域とは違う ということです。

4. まとめ

指標 意味 役割
send-rate-mbps 今使っている帯域(送信速度) 実際の送信速度をモニタリング
receive-rate-mbps 今使っている帯域(受信速度) 実際の受信速度をモニタリング
bandwidth-mbps まだ使える帯域(推定値) SRTが計算した利用可能な最大帯域

結論

bandwidth_mbps は「まだ使える帯域」= 利用可能な推定帯域
SRTがネットワーク状況を解析して算出した、回線が許容できる最大帯域を示している
「今使っている帯域(現在の送信速度)」ではなく、「どのくらいの帯域が利用可能か」という指標

この値を使って、適切なビットレートを動的に調整し、映像配信を安定させる仕組みになっています。

2025,江端さんの技術メモ

Posted by ebata