webrtc通信のビデオ部分のメディアストリームソースとしてキャンバス要素を使用したいのですが、このトピックについて議論しているリソースがあまり見つかりませんでした。
* 長いバックグラウンド ストーリー *
問題は、カメラからビデオを直接送信できないことです。これは、表示する前にビデオを処理する要件の一部です (一部の画像処理は、この問題の範囲外です)。
以前は、他のピアのブラウザーで、タグを使用してビデオを直接表示する代わりに<video>
、非表示のキャンバス要素で何らかの処理を行い、詳細を別のキャンバスにコピーしました (描画を続けるために settimeout を使用し、illusion of live video
.
現在、クライアントは video の送信前に処理を行う必要があるため、webrtc を使用してオーディオ ストリームを直接渡しました (以前は、オーディオとビデオの両方が webrtc 経由で送信されていました)。ビデオ ストリームについては、次の 2 つの解決策がありました。
手順:
ローカル ピアでビデオを処理し、非表示のキャンバスに描画します。簡単な部分。
タイムアウトを使用して、画像データを繰り返しキャプチャして送信
しwebsockets( yes, goes through server)
ます。
b) を使用するRTCDataChannel
と、パフォーマンスが大幅に向上しますが、理由もなく失敗する場合があります。他にもいくつかの問題がありました (たとえば、webp の代わりに jpeg を送信したため、余分な帯域幅が使用されました)。
別の大きな問題は、タイムアウトを使用しているためです。タブを切り替えると、反対側でフレームレートが低下します。
それで、手動で行う代わりに、非表示のキャンバスをメディアストリームソースとして使用する方法はありますか?