問題タブ [ip-fragmentation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tcp - ビデオ ストリーミング プロトコル - フラグメンテーションの処理
最近、ウェブカメラでキャプチャされたライブ ビデオを udp 経由でストリーミングしようとしていました。私が取ったアプローチは、1フレームを読み取り、udp経由で送信し、受信側でデータを読み取って表示することでした。
これで、udp/tcp を介してデータを送信すると、トランスポート層の MTU に応じてランダムな方法で断片化が発生し、基盤となる IP プロトコルが配信されるフレームの数を保証しないことを理解しました。データ層の最小 MTU は 1500 バイトと言われています。
ただし、私の各フレームは 1MB ( ~1048576 バイト) です。したがって、1500 バイトでのデータの断片化を考慮すると、単一のフレームが断片化され、受信者は約 700 パケット (1048576/1500) を取得する可能性があります。ここで、受信機は、追加の処理を伴う 1 フレームだけのために、これらすべての 700 パケットのデータを蓄積する必要があります。これは正常なのか、1 フレームのデータだけで 700 パケット!!。フレーム レートを 24 fps に維持したい場合、これは受信側が 700*24 = 16800 パケット/秒を処理しなければならないことを意味し、これは実行可能ではないようです。
別のストリーミング Web サイトがどのように機能するかを知りたいのですが、それらは 1 秒あたり 16800 データ パケットを処理していません。RTSP などの他のストリーミング プロトコルを使用することもありますが、これらは UDP/TCP の上に構築されているため、これらのプロトコルもフラグメンテーションを処理する必要があります。最近のストリーミング Web サイトは 4k ビデオを配信でき、各フレーム サイズは 1MB をはるかに超えますが、MTU は依然として 1500 バイトです。データ圧縮も行っている必要がありますが、どの程度. 何らかの方法でフレーム サイズを 50% 縮小できたとしても (受信側で圧縮解除する必要があるため、追加の処理が必要になります)、低品質の 24fps ビデオの場合、毎秒最大 8000 データ パケットを処理する必要があります。彼らはそれをどのように処理し、これらの規模でデータの断片化をどのように管理しますか。