web-dev-qa-db-ja.com

1つの接続を複数の並列に転送する

2台のLinuxサーバー間でビデオデータをストリーミングしたいのですが。

それらは互いに遠く離れており、送信者のアップリンクは最大20MBps(iperf3に基づく)です。

ただし、私が打ち負かしたいISPの制限がいくつかあります。

最初のテスト実行:

server:~# iperf3 -s
client:~# iperf3 -c SERVERIP -R
... measuring...
[  4]   0.00-30.00  sec  21.8 MBytes  6.09 Mbits/sec                  receiver

6.09MBits /秒はISPの評価をはるかに下回っているため、2回目のテスト実行でiperfとの並列接続を試みました。

server:~# iperf3 -s
client:~# iperf3 -c SERVERIP -R -P 8
... measuring...
[SUM]   0.00-30.00  sec  71.9 MBytes  20.1 Mbits/sec                  receiver

それは素晴らしいです、20MBits /秒は最大帯域幅に近いです。

20MBits /秒の平均帯域幅でビデオをストリーミングすると、ほぼ高品質のビデオが得られますが、6MBpsで同じことを試みると、はるかに品質が低下します。

ビデオプレーヤーとストリーミングサーバーがストリームを並列化できない場合、リバースプロキシ、VPN、またはiperf -P 8のように、単一の接続を複数にトンネリングできるものなどのオプションはありますか?

1
Daniel

multicataggregartpおよびreordertpの組み合わせ(VideoLAN、VLCのメーカーから) ここにあります 放送品質のストリームでも必要なことを実行します。

  • 単一の結合されたRTPストリームに対して、複数のaggregartp/reordertpストリームリンクを作成します
  • multicat(または必要なもの)を使用して、ストリームをaggregartpにフィードします

とは言うものの、物事を簡単にするために、再考することをお勧めします。エンコーダー側ですべてを調整すると、非常に高品質のストリームを6Mbit/s(Netflixの最高設定をAFAIK!)に入れて、それで済ませることができるかもしれません。 。

2
Eugen Rieck