どうやら遅延は複合要因だったようだ。主な原因は以下の二つ。
- タイマーのインターバルが遅い
- 送信データが大きすぎる。
まず以下の状態の時遅延はほとんどない。
- タイマーのインターバル 0.016
- 送信データのサイズを640 X 360
- カメラからの入力フレームレート30fps
1といえる理由としてうまくいく状態からタイマーのインターバルを0.1にしたとき遅延が発生した。
2といえる理由としてうまくいく状態から、送信データを1280 X 720 としたとき遅延が発生した。また、640X320のままでもデータの受け手をふやす(unityでの表示とpythonでの直接表示を同時に起動)と遅延が発生した。
上手くいく状態からカメラの入力フレームレートを10fpsに落としても遅延派はとんどなかった。
これを踏まえてソースコートを修正する必要がある。