PCディスプレイをAndroidにストリームするアプリを作成しました.PC画面をほぼリアルタイムで取得するコードを作成しました。今、私はこのデータを(Matにあります)私のAndroidデバイスに送りたいと思います。OpenCV MatをPCからAndroid経由でSocket経由で送信する方法
私は以前にソケット接続を作成しており、PCからAndroidにデータを送信する方法の基礎を知っています。私はpng
形式で各フレームを保存しようとしましたが、Sockets
以上で送信しましたが、それはかなり遅く、あまりリアルタイムではありません。
私の質問:OpenCV MatをPCからAndroidに(近く)リアルタイムで送信する最も速いアプローチは何ですか?
サイドノート:私のPCコードはJavaのC++およびAndroidコードで書かれています。そして、私のPC上でPCのストリーミングされたコンテンツを見ると、それはかなりリアルタイムです。
どのフレームサイズですか?どのようなフレームレートですか?あなたが追いつくことができないときにフレームを落とす余裕はありますか?それは(圧縮のように)無損失でなければならないのですか?どのようにpngを生成しましたか?ディスクに、または直接メモリに?圧縮設定でプレイしましたか?それはzlibの下にあり、より高い圧縮レベルでは十分に速いとは思われません。一般に、圧縮と速度のトレードオフになります。 –
@DanMašekフレームサイズは、ラグなしに送信できる最高(ハーフHD?)にすることができます。フレームレートは20以上でなければなりません。無損失は必要ありませんが、できれば良いでしょう。私はディスクに生成しました(私は 'imwrite'でメモリに書き込む方法は現在わかりません)、いくつかの実験の後で3/4に圧縮レベルを維持しました。 – FadedCoder
メモリバッファに直接書き込むには、['imencode'](http://docs.opencv.org/3.0-beta/modules/imgcodecs/doc/reading_and_writing_images.html#imencode)関数を使用します。 (そして逆の 'imdecode'もあります)。 –