Skype などのプログラムがユーザーから別のユーザーに、またはその逆にビデオをストリーミングする場合、通常はどのように行われますか?
クライアント A はサーバーにストリーミングし、サーバーはそれをクライアント B に送信しますか?
それとも、クライアント A から B に直接送られますか?
私が間違っていて、どれも正しくない場合は、お気軽に修正してください。
Skype はピア ツー ピアであるため、それよりもはるかに複雑です。つまり、ストリームは複数のサーバーとして機能する他の複数の Skype クライアントを通過する可能性があります。Skype には、このための巨大な中央システムがありません。Skype は、ストリームを配信できる複数の場所を常に追跡しているため、これらの場所のいずれかが消失した場合 (その Skype クライアントが消失した場合)、別のサーバー/Skype クライアントを介して送信を継続します。これは非常に効率的に行われるため、中断に気付かないほどです。
基本的に、これはその達成方法です。
1) あなたが得ることができる最高の圧縮を使用してビデオ/オーディオをエンコードします。非可逆圧縮と十分なエイリアシングを行って、使用できないビデオとオーディオの部分を破棄します。バックグラウンドのヒスノイズを除去するように
2) ビデオ/オーディオをパケットにパックし、タイムスタンプを付けます。通常、パケットはデータグラムです。
3) パケットを宛先に直接送信します。最適なルートを使用してください。すべてのパケットを同じ方法で送信する必要はありません。可能であれば、多くのルートを使用してください。P2P ネットワークは、多くの場合、同じ宛先への多くのルートを使用します
4) 宛先で再エンコードします。パケットが古すぎる場合は、破棄してください。パケットが失われた場合でも、手遅れなので気にしないでください。
5) ビデオに戻って参加し、不足しているフレームをできる限り埋めます。