2016-04-27 41 views
0

PCディスプレイをAndroidにストリームするアプリを作成しました.PC画面をほぼリアルタイムで取得するコードを作成しました。今、私はこのデータを(Matにあります)私のAndroidデバイスに送りたいと思います。OpenCV MatをPCからAndroid経由でSocket経由で送信する方法

私は以前にソケット接続を作成しており、PCからAndroidにデータを送信する方法の基礎を知っています。私はpng形式で各フレームを保存しようとしましたが、Sockets以上で送信しましたが、それはかなり遅く、あまりリアルタイムではありません。

私の質問:OpenCV MatをPCからAndroidに(近く)リアルタイムで送信する最も速いアプローチは何ですか?

サイドノート:私のPCコードはJavaのC++およびAndroidコードで書かれています。そして、私のPC上でPCのストリーミングされたコンテンツを見ると、それはかなりリアルタイムです。

+0

どのフレームサイズですか?どのようなフレームレートですか?あなたが追いつくことができないときにフレームを落とす余裕はありますか?それは(圧縮のように)無損失でなければならないのですか?どのようにpngを生成しましたか?ディスクに、または直接メモリに?圧縮設定でプレイしましたか?それはzlibの下にあり、より高い圧縮レベルでは十分に速いとは思われません。一般に、圧縮と速度のトレードオフになります。 –

+0

@DanMašekフレームサイズは、ラグなしに送信できる最高(ハーフHD?)にすることができます。フレームレートは20以上でなければなりません。無損失は必要ありませんが、できれば良いでしょう。私はディスクに生成しました(私は 'imwrite'でメモリに書き込む方法は現在わかりません)、いくつかの実験の後で3/4に圧縮レベルを維持しました。 – FadedCoder

+0

メモリバッファに直接書き込むには、['imencode'](http://docs.opencv.org/3.0-beta/modules/imgcodecs/doc/reading_and_writing_images.html#imencode)関数を使用します。 (そして逆の 'imdecode'もあります)。 –

答えて

0

多くの試した後、私は主に私の問題を解決することができました。 MJPEGサーバーのコードは次のとおりです:Error while using QTcpSocket (ほとんどすべてが小さな問題を除いて修正されています)。

関連する問題