RGB32 でエンコードされたカラー イメージ フレームをバイト配列として 30 FPS で送信するデバイスがあります。
これらのフレームを、websocket 接続を介して可能な限り最もパフォーマンスの高い方法でブラウザーに送信したいと思います。
Websocket を介して画像データを取得する最善の方法は、ブラウザーで URI として解釈する base64 文字列として使用することですが、未加工の RGB32 データを base64 エンコードすることは、ブラウザーで解釈できないため、明らかに機能しません。 .
したがって、base64 にエンコードしてパイプを送信する前に、RGB32 データを jpg としてエンコードする必要がありますが、バイト配列をエンコードするために見つけたすべてのソリューションには、ディスクへの保存が含まれており、これは明らかにパフォーマンス キラーです。
これらの RGB32 バイト配列をオンザフライで jpg に変換するためのパフォーマンスの高い方法を誰かに説明してもらえますか?
あるいは、これらの RGBA フレームを websocket からブラウザーに送信するための別の高性能な方法についてアイデアをお持ちの方がいらっしゃいましたら、ぜひお聞かせください。
ありがとう!
コードは次のようになります。
private void ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
{
using (ColorImageFrame frame = e.OpenColorImageFrame())
{
if (frame != null)
{
byte[] pixelData = new byte[frame.PixelDataLength];
frame.CopyPixelDataTo(pixelData);
//display in wpf
this._ColorImageBitmap.WritePixels(this._ColorImageBitmapRect, pixelData, this._ColorImageStride, 0);
//send via websocket to chrome
//how do we create a base64 encoded jpg here and pass it off to chrome?
MainWindow.Broadcast(DataForChromeGoesHere);
}
}
}